[Python] Problème avec le xhtml sous python..
ABX-Dev0x86
Messages postés
6
Statut
Membre
-
heyquem Messages postés 808 Statut Membre -
heyquem Messages postés 808 Statut Membre -
Bonjour,
Je me présente, je suis un étudiant Belge qui est passionné d'informatique et de haute technologie.
En septembre, notre professeur d'informatique nous a lancé dans le python (2.7).
Ce langage m'ayant énormément plut, j'ai donc décidé d'aller plus loin et de continuer seul (puisque la session "python" était finie...)
Aujourd'hui, j'ai rencontré un problème :
Le programme a pour but de copier l'entièreté de la page xhtml et d'y trouver un argument et remplacer celui-ci.
Par exemple :
il doit trouver un argument qui s'appelle title dans une balise <a/>.
title a pour argument title="le nom de mon image" et moi, je voudrais modifier celle-ci par title="le nom de l'image de ABX"
J'aimerai également savoir s'il est possible de le faire avec des balises...
Par exemple :
il doit trouver la balise <title>titre</title> et remplacer le texte "titre" par "sniffé par ABX"
Pouvez-vous m'aider s'il vous plait?
Je me présente, je suis un étudiant Belge qui est passionné d'informatique et de haute technologie.
En septembre, notre professeur d'informatique nous a lancé dans le python (2.7).
Ce langage m'ayant énormément plut, j'ai donc décidé d'aller plus loin et de continuer seul (puisque la session "python" était finie...)
Aujourd'hui, j'ai rencontré un problème :
Le programme a pour but de copier l'entièreté de la page xhtml et d'y trouver un argument et remplacer celui-ci.
Par exemple :
il doit trouver un argument qui s'appelle title dans une balise <a/>.
title a pour argument title="le nom de mon image" et moi, je voudrais modifier celle-ci par title="le nom de l'image de ABX"
J'aimerai également savoir s'il est possible de le faire avec des balises...
Par exemple :
il doit trouver la balise <title>titre</title> et remplacer le texte "titre" par "sniffé par ABX"
Pouvez-vous m'aider s'il vous plait?
A voir également:
- [Python] Problème avec le xhtml sous python..
- Citizen code python avis - Accueil - Outils
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- Citizen code python solution - Forum Python
6 réponses
Bonsoir,
Il n'y a pas grand monde qui fasse du Python ici.
Comment es-tu censé intervenir sur ton texte XHTML ?
Certains te diront qu'il faut utiliser un parseur, et dans le cas de XHTML il faut utiliser le module HTMLParser.
Mais un parser est une machinerie assez grosse, qu'on peut estimer plus ou moins inadaptée pour des traitements asez simples.
De ce fait, certains te diront qu'on peut tout aussi bien se débrouiller avec les expressions rationelles pour faire des choses simples. Ou même compiquées. Ca revient à créer soi même une sorte de parser, mais en plus simple, qui va faire exactement ce qu'on veut , sans avoir à étudier préalablement la machinerie d'un module qui est prévu pour faire bien plus que résoudre son propre petit problème.
J'ai un peu tendance à être dans cet esprit, car s'il faut apprendre le fonctionnement de quantités de modules spécialisés pour faire des choses de plusieurs domaines bien délimités, en plus de l'apprentissage du langage lui même, cela finit par faire des quantités énormes de données à assimiler et retenir. Mais c'est tout de même la logique naturelle dans une discipline (informatique) qui a pour but de parvenir à répondre à tous les besoins de traitement d'informations.
Il y en a même qui te diront que tu peux faire tes traitemenst sur ton texte avec les seuls outils des fonctions de base constituant le langage lui-même.: find(), partition(), etc.... Cela peut être une solution facile à réaliser, pour quelqu'un ne connaissant pas un module spécialisé ni les regexes.
Ainsi par exemple pour chercher le titre dans une balise <title>titre</title> au sein d'un texte ch , et le remplacer par "sniffé par ABX" , on peut faire:
S'il y a plusieurs balises, on itérera pour traiter chaque balise l'une après l'autre.
Avec une regex, on utilisera plutôt re.sub()
Il faudrait avoir plus de renseignements précis sur les traitements que tu veux faire: balises à modifier sont-elles nombreuses dans le texte ? quelle part de variabilité et quelle part de constantes dans ces balises et autour ?
Avoir un texte concret ne serait pas de trop.
Il n'y a pas grand monde qui fasse du Python ici.
Comment es-tu censé intervenir sur ton texte XHTML ?
Certains te diront qu'il faut utiliser un parseur, et dans le cas de XHTML il faut utiliser le module HTMLParser.
Mais un parser est une machinerie assez grosse, qu'on peut estimer plus ou moins inadaptée pour des traitements asez simples.
De ce fait, certains te diront qu'on peut tout aussi bien se débrouiller avec les expressions rationelles pour faire des choses simples. Ou même compiquées. Ca revient à créer soi même une sorte de parser, mais en plus simple, qui va faire exactement ce qu'on veut , sans avoir à étudier préalablement la machinerie d'un module qui est prévu pour faire bien plus que résoudre son propre petit problème.
J'ai un peu tendance à être dans cet esprit, car s'il faut apprendre le fonctionnement de quantités de modules spécialisés pour faire des choses de plusieurs domaines bien délimités, en plus de l'apprentissage du langage lui même, cela finit par faire des quantités énormes de données à assimiler et retenir. Mais c'est tout de même la logique naturelle dans une discipline (informatique) qui a pour but de parvenir à répondre à tous les besoins de traitement d'informations.
Il y en a même qui te diront que tu peux faire tes traitemenst sur ton texte avec les seuls outils des fonctions de base constituant le langage lui-même.: find(), partition(), etc.... Cela peut être une solution facile à réaliser, pour quelqu'un ne connaissant pas un module spécialisé ni les regexes.
Ainsi par exemple pour chercher le titre dans une balise <title>titre</title> au sein d'un texte ch , et le remplacer par "sniffé par ABX" , on peut faire:
pos1 = ch.find('<title>') + 7 pos2 = ch.find('</title>') newch = ch[0:pos1] + "sniffé par ABX" + ch[pos2:]
S'il y a plusieurs balises, on itérera pour traiter chaque balise l'une après l'autre.
Avec une regex, on utilisera plutôt re.sub()
Il faudrait avoir plus de renseignements précis sur les traitements que tu veux faire: balises à modifier sont-elles nombreuses dans le texte ? quelle part de variabilité et quelle part de constantes dans ces balises et autour ?
Avoir un texte concret ne serait pas de trop.
Au fait, mon programme est sensé modifier l'attribut d'une balise, mais c'est un attribut très précis.
Dès qu'il l'a trouvé, il doit modifier la valeur de celui-ci.
Par exemple:
il doit trouver l'attribut heu... disons action="www.jesaispastropcequonestsensséymettre.com" et modifier ce truc en action="www.unautretruc.com"
Tu vois plus ou moins ce que je veux dire?
Dès qu'il l'a trouvé, il doit modifier la valeur de celui-ci.
Par exemple:
il doit trouver l'attribut heu... disons action="www.jesaispastropcequonestsensséymettre.com" et modifier ce truc en action="www.unautretruc.com"
Tu vois plus ou moins ce que je veux dire?
Oui je vois.
Mais relis ton post, et essaie de trouver la réponse à cette question: où se trouve la balise contenant cet attribut ?
- dans un texte en mémoire lors d'un traitement qui ne va pas nécessiter une inscription du résultat sur un disque dur ?
- ou dans un fichier qui se trouve sur DD ?
- ou au supermarché, rayon fruits et légumes ?........
Je dis ça parce que selon le cas, il faut envisager les choses différemment. S'il faut changer un attribut se trouvant dans un fichier sur un disque, ça va entrainer des manipulations de fichier, et on manipule différemment selon les cas.
Quand tu dis que l'attribut est précis, tu veux dire qu'il est unique, ou qu'il a une identité précise mais se retrouve plusieurs fois dans le texte ?
Mais relis ton post, et essaie de trouver la réponse à cette question: où se trouve la balise contenant cet attribut ?
- dans un texte en mémoire lors d'un traitement qui ne va pas nécessiter une inscription du résultat sur un disque dur ?
- ou dans un fichier qui se trouve sur DD ?
- ou au supermarché, rayon fruits et légumes ?........
Je dis ça parce que selon le cas, il faut envisager les choses différemment. S'il faut changer un attribut se trouvant dans un fichier sur un disque, ça va entrainer des manipulations de fichier, et on manipule différemment selon les cas.
Quand tu dis que l'attribut est précis, tu veux dire qu'il est unique, ou qu'il a une identité précise mais se retrouve plusieurs fois dans le texte ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
La première solution serait préférable, mais s'il faut, je peux toujours faire en sorte qu'il copie le .html quelque part et qu'il le modifie, cela m'est égal...
Quelle première solution ?
Premier cas, tu veux dire ? C'est à dire un texte dans un fichier sur disque dur?
Tu as du mal à être explicite...
Et du mal à être logique aussi: si tu copies le .html quelque part, c'est avant que tu vas le modifier, pas "faire en sorte qu'il copie le .html quelque part et qu'il le modifie" ensuite
Au fait , c'est du html ou du xhtml ?
Je ne sais que te dire de plus, je n'ai rien de concret à voir pour le moment. Montre un bout de code
Premier cas, tu veux dire ? C'est à dire un texte dans un fichier sur disque dur?
Tu as du mal à être explicite...
Et du mal à être logique aussi: si tu copies le .html quelque part, c'est avant que tu vas le modifier, pas "faire en sorte qu'il copie le .html quelque part et qu'il le modifie" ensuite
Au fait , c'est du html ou du xhtml ?
Je ne sais que te dire de plus, je n'ai rien de concret à voir pour le moment. Montre un bout de code