0
votes

Python HTML Extrait de texte dans la liste

J'essaie d'extraire tout le texte sur une page HTML dans une liste Split par balise. Par exemple, si le HTML ressemblait à celui ci-dessous:

["Hello","World Test This","HTML","Extraction"]


1 commentaires

Bonjour, les règles de la façon dont vous souhaitez arriver à cette sortie sont légèrement ambiguës. Voulez-vous simplement supprimer toutes les balises HTML et que chaque ligne de texte soit son propre élément de la liste?


3 Réponses :


0
votes

Vous pouvez utiliser HTMLParser Code> classe de la standard Bibliothèque Code> Strong> pour analyser le HTML. Il a un Handin_Data ​​Code > méthode appelée à traiter les données arbitraires.

>>> from html.parser import HTMLParser
>>>
>>> class MyHTMLParser(HTMLParser):
...     def __init__(self, *args, **kwargs):
...         self.data = []
...         super(MyHTMLParser, self).__init__(*args, **kwargs)
...     def handle_data(self, data):
...         data = data.strip()
...         if data:
...             self.data.append(data)
...
>>> parser = MyHTMLParser()
>>>
>>> parser.feed("""
... <div>Hello
...     <span>World Test This</span>
...     <p>HTML</p>
... </div>
... <span>Extraction</span>
... """)
>>>
>>> print(parser.data)
['Hello', 'World Test This', 'HTML', 'Extraction']


0 commentaires

0
votes

Vous pouvez utiliser magnifiquesoups pour cela:

from bs4 import BeautifulSoup

html= """<div>Hello
    <span>World Test This</span>
    <p>HTML</p>
</div>
<span>Extraction</span>
"""

soup = BeautifulSoup(html, 'html.parser')
words = soup.text.replace('\n\n', '\n').replace('  ','').lstrip().splitlines()
print(words)


0 commentaires

0
votes

Utilisez une compréhension de la liste avec RE GEX: xxx

sortie: xxx


0 commentaires