Rechercher : dans
Par :

[Python] HTML Parser

Dernière réponse le 3 mai 2004 à 18:04:20 psykotrop, le 3 mai 2004 à 12:03:45 
 Signaler ce message aux modérateurs

Salut à tous ! je me met doucement au Python pour créer un parser. En fait pour essayer d'etre clair je souhaiterais récuperer l'ensemble du contenu d'une page html se trouvant entre deux tags spécifiques:

<!-- Premiere nouvelle de section -->
<span class="titreNouvelle">
C'est blalalblalabalbalbalablabalbalbal</span><BR><BR>
<span class="texteNouvelle">
<B>blabla</B>
<br>
<br>blalalblalabalbalbalablabalbalbal
<!-- / Premiere nouvelle de section -->


Ici le tag de début : <!-- Premiere nouvelle de section -->
Tag de fin : <!-- / Premiere nouvelle de section -->

Etant tout débutant qqu accepterait il de me montrer un code qui saurait faire ca ? sachant que j'ai en local le fichier .html contenant l'ensemble et que je souhaite creer un fichier output.html ne contenant que ce qui se présente entre les deux tags précités.

Merci par avance de toute l'aide que vous pourrez m'apporter !
PsyKotroP

Meilleures réponses pour « [Python] HTML Parser » dans :
Le langage Python est faiblement typé VoirMythe Le langage de programmation Python est faiblement typé, comme le php ou le Basic. Réalité FAUX. Explications Le Python est un langage à typage fort dynamique. Démonstration: >>> a="toto" >>> b=5 >>> print a+b Traceback (most recent...
[Site web] Vérifier, optimiser et nettoyer son code HTML VoirLes logiciels WYSIWYG de création de pages web produisent parfois du contenu HTML rempli de balises HTML inutiles, voire incompatibles avec les recommandations du W3C. Les outils proposés ci-dessous permettent de vérifier la validité du code HTML...
Télécharger HTML Tidy VoirHTML Tidy est un utilitaire permettant de vérifier et d'optimiser tout code HTML. La version originale de cet utilitaire s'utilise en mode de commande uniquement. La présente version, appelée "GUI Tidy", possède une interface graphique. Notez...
Niveaux de titres en HTML VoirNiveaux de titre Le langage HTML définit 6 niveaux de titre (en anglais heading), afin de définir une structuration hiérarchique des paragraphes dans un texte : Balise Effet...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
Listes et énumérations en HTML VoirLes listes Une liste est un paragraphe structuré contenant une suite d'articles. Le langage HTML définit trois types de listes : La liste ordonnée ; La liste non ordonnée ; La liste de définition. Liste ordonnée Conteneur Type de...

1

sebsauvage, le 3 mai 2004 à 12:10:40
  • +1

Hello !

Tu as 3 solutions:
- utiliser la simple recherche de chaînes (.find(), etc.)
- utiliser les expressions régulières
- utiliser HTMLParser

Pour les expressions régulières et le HTMLParser, j'ai mis des exemples là:
http://sebsauvage.net/python/snyppets/index.html#getlinks1

Note que la solution avec le .find() peut dans certains cas être beaucoup plus rapide que les 2 autres.

Il y a également un sujet de discussion sur ça ici:
http://www.commentcamarche.net/forum/affich-655749-%5BPython­%5D-HTML-parsing
http://www.commentcamarche.net/forum/affich-648645-%5BPython­%5D-HTMLParser-Handle_StartTag
http://www.commentcamarche.net/forum/affich-289535-%5BPython­%5D-Extractions-de-liens-d%27une-page-web

Répondre à sebsauvage

2

sebsauvage, le 3 mai 2004 à 14:11:24
  • +1

J'ai donné un exemple pour récupérer tout ce qui se trouve entre 2 tags précis sans utiliser ni expressions régulières ni HTMLParser.

http://www.commentcamarche.net/forum/affich-655749-%5BPython­%5D-HTML-parsing#15

Répondre à sebsauvage

3

psykotrop, le 3 mai 2004 à 15:27:34

Comment adapter ton dernier exemple :
# Nos données à tester:
data = """aaaa<!-- Begin : Toto -->bbb<!-- End : Toto est OK -->ccc
<!-- Begin : Toto --> Encore un autre ! dddd<!-- End : Toto est OK -->"""

en utilisant un fichier a la place du data= ?

Répondre à psykotrop

4

sebsauvage, le 3 mai 2004 à 15:32:02
  • +2

Ben... tu ouvre le fichier !

file = open("monfichier.dat","rb")
data = file.read()
file.close()

(à condition que le fichier tienne en mémoire).

Répondre à sebsauvage

5

psykotrop, le 3 mai 2004 à 17:27:46

Merci beaucoup ca marche nikel avec l'ouverture de fichier !

Répondre à psykotrop

6

psykotrop, le 3 mai 2004 à 17:34:50

Petite autre question. Dans le bout de fichier que je récupere j'ai des tags style </span><BR><BR>
Comment les supprimer du fichier ? histoire d'etre propre.

Il serait bon de faire une analyse ligne par ligne et remplacer par rien non ? mais je ne sais pas comment faire.

Sachant qu'un tag "</span><BR><BR>" sur une ligne n'est pas un tag "<br>" sur une autre ca je veux le conserver :) difficile de s'expliquer je donne un exemple :

texte1</span><BR><BR>
<span class="texte">
<br>chanteur

pour obtenir :
texte1
<br>chanteur

en supprimant par ligne : tous les "<span class="texte">" et "</span><BR><BR>"

Répondre à psykotrop

7

 sebsauvage, le 3 mai 2004 à 18:04:20

Dans ce cas, tu peux prendre HTMLParser et:
- implémenter handle_data() pour récupérer uniquement le texte entre les balides.
- implémenter handle_starttag() et ajouter seulement un retour à la ligne "\n" quand tu rencontre <br>.

Ainsi, le parseur va automatiquement "nettoyer" ton fichier HTML de toutes les balises.

(Voir les liens que j'ai donné: ils contiennent des exemples de HTMLParser.)

Répondre à sebsauvage