je donne les résultats suivants qui fonctionne très bien quand il n'y a pas d'enfant le tag h4
:re.compile ne fonctionne pas pour l'élément de texte BeautifulSoup4 quand il y a des enfants
if (BS.find('div', {"id" : "table_content"}).find('h4', text=re.compile(".*Super Users.*"))):
print "Found Super Users!"
cependant, lorsque l'étiquette h4
a des enfants, les l'impression n'arrive jamais. J'ai essayé le débogage en utilisant les éléments suivants:
for h4 in BS.find('div', {"id" : "table_content"}).findAll('h4'):
print h4.text
qui produit:
Users
Super Users
(TMP)
Administrators
....
En fait, la partie (TMP)
semble jeter hors parce qu'il est le texte d'un enfant de la balise h4
, comme par exemple :
<h4>Super User
<span>(<a href="/tmp">TMP</a>)</span>
</h4>
l'inconvénient est que le (TMP)
est pas toujours là, donc je ne peux pas faire des hypothèses. J'ai juste besoin de savoir si Super User
est dans le texte de h4
, alors je peux continuer.
pas sûr, mais ça ne serait pas 're.compile (". * Super Users. *", Flags = re.DOTALL) 'pour gérer les sauts de ligne? –
Malheureusement, cela ne semble pas fonctionner. C'est peut-être parce que j'ai testé 'if h4.text [: 5] ==" Super "' et ça passe. Peut-être que mon regex est éteint? – rjbogz
ok, essayez 're.compile (". * Super \ s + Users. * "))', Tous les espaces ne sont pas des espaces. –