J'essaie d'obtenir une liste de toutes les balises html de la belle soupe.
Je vois tout trouver mais je dois connaître le nom du tag avant de lancer une recherche.
S'il y a du texte comme
html = """<div>something</div>
<div>something else</div>
<div class='magical'>hi there</div>
<p>ok</p>"""
Comment pourrais-je obtenir une liste comme
list_of_tags = ["<div>", "<div>", "<div class='magical'>", "<p>"]
Je sais comment faire cela avec regex, mais j'essaie d'apprendre BS4
Vous n'avez pas besoin de spécifier d'arguments à find_all()
- dans ce cas, BeautifulSoup
vous trouverait chaque balise de l'arborescence, de manière récursive. Échantillon:
>>> from bs4 import BeautifulSoup
>>>
>>> html = """<div>something</div>
... <div>something else</div>
... <div class='magical'>hi there</div>
... <p>ok</p>"""
>>> soup = BeautifulSoup(html, "html.parser")
>>> [tag.name for tag in soup.find_all()]
[u'div', u'div', u'div', u'p']
>>> [str(tag) for tag in soup.find_all()]
['<div>something</div>', '<div>something else</div>', '<div class="magical">hi there</div>', '<p>ok</p>']