2010-08-19 13 views
2

Je voudrais extraire le texte d'un fichier HTML en utilisant Python. Je veux essentiellement la même sortie que je recevrais si je copiais le texte d'un navigateur et le collais dans le bloc-notes.conversion html en texte en utilisant le langage python

Je voudrais quelque chose de plus robuste que d'utiliser des expressions régulières qui peuvent échouer sur du HTML mal formé. J'ai vu beaucoup de gens recommander Beautiful Soup, mais j'ai eu quelques problèmes à l'utiliser. Pour un, il a ramassé du texte indésirable, comme la source JavaScript. En outre, il n'a pas interprété les entités HTML. Par exemple, je m'attendrais ' en source HTML à être converti en apostrophe dans le texte, comme si j'avais collé le contenu du navigateur dans le bloc-notes.

Mise à jour: html2text semble prometteur. Il gère correctement les entités HTML et ignore JavaScript. Cependant, il ne produit pas exactement le texte brut; il produit une démarque qui devrait ensuite être transformée en texte brut. Il ne contient aucun exemple ou documentation, mais le code semble propre.

+0

Si seulement la vie était si facile ... savez-vous comment le HTML fonctionne? Avez-vous ouvert votre fichier HTML par exemple? Bloc-notes? – katrielalex

+0

question mise à jour s'il vous plaît jeter un oeil ......... –

+0

il n'y a pas d'outil magique qui va tout enlever. toutes les pages Web vont être chargées de choses. mieux vaut tout saisir, puis remplacer les apostrophes et supprimer javascript. – JiminyCricket

Répondre

6

vous devez utiliser urllib2 python library pour obtenir le code HTML du site Web, puis analyser le code HTML pour récupérer le texte que vous voulez.

Utilisez BeautifulSoup pour analyser à travers le html

import BeautifulSoup 
resp = urllib2.urlopen("http://stackoverflow.com") 
rawhtml = resp.read() 
#parse through html to get text 
soup=BeautifulSoup(rawhtml) 
+1

C'est la méthode que je recommanderais aussi. –

+0

merci ça m'a beaucoup aidé –

1

Je ne pas « copier-coller à partir du navigateur » est une opération bien définie. Par exemple, que se passerait-il si toute la page était couverte d'un transparent flottant div? Et si il y avait des tables? Qu'en est-il du contenu dynamique? BeautifulSoup est un puissant analyseur syntaxique; il suffit de savoir comment l'utiliser (il est facile, par exemple, d'enlever les balises script de la page). Heureusement, il a beaucoup de documentation.

Vous pouvez utiliser xml.sax.utils.unescape pour annuler l'effacement des entités HTML.

+0

Pourquoi la downvote? OP n'a jamais dit qu'il voulait aller chercher la page sur internet! "Fichier HTML" implique que c'est local. – katrielalex

Questions connexes