Je voudrais extraire le contenu Hello world
. Veuillez noter qu'il existe plusieurs <table>
et similaire <td colspan="2">
sur la page également:
<table border="0" cellspacing="2" width="800">
<tr>
<td colspan="2"><b>Name: </b>Hello world</td>
</tr>
<tr>
...
J'ai essayé ce qui suit:
hello = soup.find(text='Name: ')
hello.findPreviousSiblings
Mais cela n'a rien rapporté.
De plus, je rencontre également des problèmes avec l'extraction suivante de My home address
:
<td><b>Address:</b></td>
<td>My home address</td>
J'utilise également la même méthode pour rechercher le text="Address: "
mais comment naviguer vers la ligne suivante et extraire le contenu de <td>
?
L'opérateur contents
fonctionne bien pour extraire text
de <tag>text</tag>
.
<td>My home address</td>
exemple:
s = '<td>My home address</td>'
soup = BeautifulSoup(s)
td = soup.find('td') #<td>My home address</td>
td.contents #My home address
<td><b>Address:</b></td>
exemple:
s = '<td><b>Address:</b></td>'
soup = BeautifulSoup(s)
td = soup.find('td').find('b') #<b>Address:</b>
td.contents #Address:
utiliser ensuite à la place
>>> s = '<table border="0" cellspacing="2" width="800"><tr><td colspan="2"><b>Name: </b>Hello world</td></tr><tr>'
>>> soup = BeautifulSoup(s)
>>> hello = soup.find(text='Name: ')
>>> hello.next
u'Hello world'
suivant et précédent vous permettent de vous déplacer dans les éléments du document dans l'ordre dans lequel ils ont été traités par l'analyseur tandis que les méthodes frère fonctionnent avec l'arbre d'analyse