[Python] Problème avec le xhtml sous python..

Fermé
ABX-Dev0x86 Messages postés 5 Date d'inscription dimanche 13 février 2011 Statut Membre Dernière intervention 18 février 2011 - 13 févr. 2011 à 19:09
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 18 févr. 2011 à 18:07
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?


6 réponses

ABX-Dev0x86 Messages postés 5 Date d'inscription dimanche 13 février 2011 Statut Membre Dernière intervention 18 février 2011
16 févr. 2011 à 21:04
Alors? Toujours personne pour m'aider?
=(
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
Modifié par heyquem le 17/02/2011 à 01:08
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:
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.
0
ABX-Dev0x86 Messages postés 5 Date d'inscription dimanche 13 février 2011 Statut Membre Dernière intervention 18 février 2011
17 févr. 2011 à 22:19
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?
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
18 févr. 2011 à 00:26
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ABX-Dev0x86 Messages postés 5 Date d'inscription dimanche 13 février 2011 Statut Membre Dernière intervention 18 février 2011
18 févr. 2011 à 17:30
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...
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
Modifié par heyquem le 18/02/2011 à 18:07
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
0