2024-10-04 09:26:31 发布
网友
我在玩BeautifulGroup 4,我有这个html代码:
</tr> <tr> <td id="freistoesse">Giraffe</td> <td>14</td> <td>7</td> </tr>
我想匹配<td>标记之间的两个值,所以这里是14和7。
<td>
我试过这个:
giraffe = soup.find(text='Giraffe').findNext('td').text
但这只匹配14。如何将这两个值与此函数匹配?
14
使用find_all而不是findNext:
find_all
findNext
import bs4 as bs content = '''\ <tr> <td id="freistoesse">Giraffe</td> <td>14</td> <td>7</td> </tr>''' soup = bs.BeautifulSoup(content) for td in soup.find('td', text='Giraffe').parent.find_all('td'): print(td.text)
收益率
Giraffe 14 7
或者,您可以使用find_next_siblings(也称为fetchNextSiblings):
find_next_siblings
fetchNextSiblings
for td in soup.find(text='Giraffe').parent.find_next_siblings(): print(td.text)
14 7
说明:
注意,soup.find(text='Giraffe')返回一个NavigableString。
soup.find(text='Giraffe')
In [30]: soup.find(text='Giraffe') Out[30]: u'Giraffe'
要获取关联的td标记,请使用
td
In [31]: soup.find('td', text='Giraffe') Out[31]: <td id="freistoesse">Giraffe</td>
或者
In [32]: soup.find(text='Giraffe').parent Out[32]: <td id="freistoesse">Giraffe</td>
一旦有了td标记,就可以使用find_next_siblings:
In [35]: soup.find(text='Giraffe').parent.find_next_siblings() Out[35]: [<td>14</td>, <td>7</td>]
PS.BeautifulSoup添加了使用下划线而不是CamelCase的方法名。他们做了同样的事情,但符合PEP8风格指南的建议。因此,更喜欢find_next_siblings而不是fetchNextSiblings。
使用
find_all
而不是findNext
:收益率
或者,您可以使用
find_next_siblings
(也称为fetchNextSiblings
):收益率
说明:
注意,
soup.find(text='Giraffe')
返回一个NavigableString。要获取关联的
td
标记,请使用或者
一旦有了
td
标记,就可以使用find_next_siblings
:PS.BeautifulSoup添加了使用下划线而不是CamelCase的方法名。他们做了同样的事情,但符合PEP8风格指南的建议。因此,更喜欢
find_next_siblings
而不是fetchNextSiblings
。相关问题 更多 >
编程相关推荐