J'ai la soupe suivante:
<a href="some_url">next</a>
<span class="class">...</span>
De cela, je veux extraire le href, "some_url"
Je peux le faire si je n'ai qu'un seul tag, mais ici il y a deux tags. Je peux aussi obtenir le texte 'next'
mais ce n'est pas ce que je veux.
En outre, existe-t-il une bonne description de l'API quelque part avec des exemples? J'utilise la documentation standard , mais je cherche quelque chose d'un peu plus organisé.
Vous pouvez utiliser find_all
de la manière suivante pour rechercher tous les éléments a
dotés d'un attribut href
et les imprimer:
from BeautifulSoup import BeautifulSoup
html = '''<a href="some_url">next</a>
<span class="class"><a href="another_url">later</a></span>'''
soup = BeautifulSoup(html)
for a in soup.find_all('a', href=True):
print "Found the URL:", a['href']
La sortie serait:
Found the URL: some_url
Found the URL: another_url
Notez que si vous utilisez une version plus ancienne de BeautifulSoup (avant la version 4), le nom de cette méthode est findAll
. Dans la version 4, les noms de méthode de BeautifulSoup ont été modifiés pour être conformes à PEP 8 , vous devez donc utiliser find_all
à la place.
Si vous voulez toutes les balises avec un href
, vous pouvez omettre le paramètre name
:
href_tags = soup.find_all(href=True)