web-dev-qa-db-fra.com

Python / beauxoup pour trouver tout <a href> avec un texte d'ancrage spécifique

J'essaie d'utiliser une belle soupe pour analyser HTML et trouver tout HREF avec une balise d'ancrage spécifique

<a href="http://example.com">TEXT</a>
<a href="http://example.com/link">TEXT</a>
<a href="http://example.com/page">TEXT</a>

tous les liens que je cherche ont le même texte d'ancrage, dans ce cas de texte. Je ne cherche pas le texte du texte, je veux utiliser le texte de texte pour trouver tous les différents href

éditer:

pour plus de clarification à la recherche de quelque chose de similaire à l'utilisation de la classe pour analyser les liens

<a href="http://example.com" class="visible">TEXT</a>
<a href="http://example.com/link" class="visible">TEXT</a>
<a href="http://example.com/page" class="visible">TEXT</a>

puis en utilisant

findAll('a', 'visible')

sauf que le HTML que je suis analysé n'a pas de classe mais toujours le même texte d'ancrage

14
cwal

Est-ce que quelque chose comme ça fonctionne?

In [39]: from bs4 import BeautifulSoup

In [40]: s = """\
   ....: <a href="http://example.com">TEXT</a>
   ....: <a href="http://example.com/link">TEXT</a>
   ....: <a href="http://example.com/page">TEXT</a>
   ....: <a href="http://dontmatchme.com/page">WRONGTEXT</a>"""

In [41]: soup = BeautifulSoup(s)

In [42]: for link in soup.findAll('a', href=True, text='TEXT'):
   ....:     print link['href']
   ....:
   ....:
http://example.com
http://example.com/link
http://example.com/page
31
RocketDonkey