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"]
3 Réponses :
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']
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)
Utilisez une compréhension de la liste avec sortie: p> RE code> GEX:
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?