BeautifulSoup 4, findNext() la fonction
Je suis en train de jouer avec BeautifulSoup 4 et j'ai ce code html:
</tr>
<tr>
<td id="freistoesse">Giraffe</td>
<td>14</td>
<td>7</td>
</tr>
Je veux correspondre à la fois à des valeurs entre <td>
balises voici donc les 14 et 7.
J'ai essayé ceci:
giraffe = soup.find(text='Giraffe').findNext('td').text
mais cela ne correspond 14
. Comment puis-je correspondre à la fois à des valeurs de cette fonction?
Vous devez vous connecter pour publier un commentaire.
Utilisation
find_all
au lieu defindNext
:rendements
Ou, vous pouvez utiliser
find_next_siblings
(aussi connu commefetchNextSiblings
):rendements
Explication:
Noter que
soup.find(text='Giraffe')
renvoie une NavigableString.Pour obtenir la
td
tag, utilisezou
Une fois que vous avez la
td
balise, vous pouvez utiliserfind_next_siblings
:PS. BeautifulSoup a ajouté les noms de méthode que l'utilisation de soulignement à la place de CamelCase. Ils font la même chose, mais comform à la PEP8 style guide de recommandations. Ainsi, préférez
find_next_siblings
surfetchNextSiblings
.AttributeError: 'NavigableString' object has no attribute 'find_all'
idées?soup.find(text='Giraffe')
renvoie uneNavigableString
. À l'aide desoup.find('td', text='Giraffe')
vous donne latd
tag à la place. À partir de là, l'appelfetchNextSibling()
.