La conversion html vers texte avec Python
Je suis en train de convertir un bloc html en texte à l'aide de Python.
D'entrée:
<div class="body"><p><strong></strong></p>
<p><strong></strong>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. <a href="http://example.com/" target="_blank" class="source">Some Link</a> Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p></div>
De sortie souhaité:
Lorem
ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo
ligula eget dolor. Aenean massaConsectetuer adipiscing elit.
Certains
Lien Aenean commodo ligula eget dolor. Aenean massaAenean
massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
commodo ligula eget dolor. Aenean massaLorem ipsum dolor sit
amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.
Aenean massaConsectetuer adipiscing elit. Aenean commodo
ligula eget dolor. Aenean massa
J'ai essayé d'utiliser html2text module sans beaucoup de succès (je suis tout à fait nouveau pour python :))
voici ce que j'ai essayé:
#!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print html2text.html2text(txt)
le "txt" objet produit le bloc html ci-dessus. Je voudrais le convertir en texte et l'imprimer sur l'écran.
Toute aide avec le morceau de code serait très apprécié.
- Avez-vous de l'utilisation de Python?
lynx -dump filename.html
va le faire. lynx.browser.org en outre, vous pouvez utiliser une expression XPath et w3.org/Tools/HTML-XML-utils.
Vous devez vous connecter pour publier un commentaire.
Ce qui me manque?
soup.get_text()
donne exactement le même résultat que tu voulais...sortie
PS! Pour être exact, vous pouvez remplacer le saut de ligne avec un double -- et puis il est identique à votre exemple 🙂
Vous pouvez utiliser une expression régulière... mais pas recommandé...
Le code suivant supprime toutes les balises HTML dans vos données, vous donnant le texte.
Sortie
/<.*?>/
que je pourrais énumérer ici, à 600 caractères.La
'\n'
lieux un saut de ligne entre les paragraphes."<p>That's <strong>not</strong> what I want</p>"
[if gte mso 9]><xml><o:OfficeDocumentSettings><o:AllowPNG></o:AllowPNG>...
. Comment puis-je filtre aussi?
ou©
J'avais besoin d'un moyen de le faire sur un système du client, sans avoir à télécharger d'autres bibliothèques. Je n'ai jamais trouvé une bonne solution, j'ai donc créé mon propre. N'hésitez pas à utiliser cette option si vous le souhaitez.
Il est possible d'utiliser BeautifulSoup pour éliminer les scripts et semblables, même si vous pouvez avoir besoin d'expérimenter avec quelques sites différents pour s'assurer que vous avez couvert les différents types de choses que vous souhaitez exclure. Essayez ceci:
Il est possible à l'aide de python standard
html.parser
: