美味湯 - 是否能限制搜索到某個特定地方

2024-10-02 14:30:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在页面中搜索某些关键字并返回类ds_data容器中包含的值。我的页面有多个关键字匹配,但我只想从标记为<div id="tabsBody" class="tabsBody">的容器返回匹配项

有没有办法告诉靓汤我只想从那里搜索,我已经试过了

ds_data = soup.find('div', {'class': 'tabsBody'}.findNext(text=pattern).findNext('div', {'class': 'ds_data'})

但这失败了

我的代码

^{pr2}$

Tags: text标记dividdatads关键字页面
1条回答
网友
1楼 · 发布于 2024-10-02 14:30:39

您的代码(逐字复制了问题中的语法错误

ds_data = soup.find('div', {'class': 'tabsBody'}
       .findNext(text=pattern)
       .findNext('div', {'class': 'ds_data'})

当然会失败,因为它试图调用python字典上的方法findNext;而dict()对象没有这样的方法。在

但实际上,soup.find返回一个新的soup,您可以搜索它,因此:

^{pr2}$

将只从<div class="tabsBody"></div>元素中返回匹配项。请注意,findNext将把树导航到同级节点,因此,find将只导航到子节点。在

同样,这些名称为单数(不包含全部)的方法在匹配项上返回None,因此如果不确定内容,确实需要检查返回值。在

相关问题 更多 >