40 votes

Comment trouver le tag avec un texte particulier avec Beautiful Soup ?

J'ai le html suivant (saut de ligne marqué avec \n) :

...
<tr>
  <td class="pos">\n
      "Some text:"\n
      <br>\n
      <strong>some value</strong>\n
  </td>
</tr>
<tr>
  <td class="pos">\n
      "Fixed text:"\n
      <br>\n
      <strong>text I am looking for</strong>\n
  </td>
</tr>
<tr>
  <td class="pos">\n
      "Some other text:"\n
      <br>\n
      <strong>some other value</strong>\n
  </td>
</tr>
...

Comment trouver le texte que je cherche ? Le code ci-dessous renvoie d'abord la valeur trouvée, donc j'ai besoin de filtrer par texte fixe.

result = soup.find('td', {'class' :'pos'}).find('strong').text

Mise à jour. Si j'utilise le code suivant :

title = soup.find('td', text = re.compile(ur'Fixed text:(.*)', re.DOTALL), attrs = {'class': 'pos'})
self.response.out.write(str(title.string).decode('utf8'))

puis il renvoie juste le texte fixe :.

2voto

Prasad Giri Points 43

Une solution pour trouver une balise d'ancrage si vous avez un mot-clé particulier serait la suivante :

from bs4 import BeautifulSoup
from urllib.request import urlopen,Request
from urllib.parse import urljoin,urlparse

rawLinks=soup.findAll('a',href=True)
for link in rawLinks:
    innercontent=link.text
    if keyword.lower() in innercontent.lower():
        print(link)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X