Python 靓汤-是否可以将搜索限制在特定区域

Python 靓汤-是否可以将搜索限制在特定区域,python,beautifulsoup,Python,Beautifulsoup,我在页面上搜索某些关键字,并返回classds\u data容器中包含的值。我的页面有多个关键字匹配项,但我只想从标记为 有没有办法告诉美丽的汤我只想从那里搜索,我已经试过了 ds_data = soup.find('div', {'class': 'tabsBody'}.findNext(text=pattern).findNext('div', {'class': 'ds_data'}) 但这失败了 我的代码 keyword_list = [ 'USB 2.0 ports quantit

我在页面上搜索某些关键字,并返回class
ds\u data
容器中包含的值。我的页面有多个关键字匹配项,但我只想从标记为

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

ds_data = soup.find('div', {'class': 'tabsBody'}.findNext(text=pattern).findNext('div', {'class': 'ds_data'})
但这失败了

我的代码

keyword_list = [

'USB 2.0 ports quantity',
'USB 3.0 ports quantity',
'VGA',
'Internal memory'

]


#Iterate through our keyword list and return the results
for search_text in keyword_list:
    pattern = re.compile(r'\s*%s\s*' % search_text)
    ds_data = soup.find(text=pattern).findNext('div', {'class': 'ds_data'})
    if ds_data.find('img', {'class': 'spacer_top n-sign'}):
        result_text = '0'
    elif ds_data.find('img', {'class': 'spacer_top y-sign'}):
        result_text = 'Yes'
    else:
        result_text = ds_data.text
    print search_text, result_text
您的代码(逐字复制了问题的语法错误

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

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

divsoup = soup.find('div', {'class': 'tabsBody'})
ds_data = divsoup.find(text=pattern).findNext('div', {'class': 'ds_data'})
将仅从
元素中返回匹配项。请注意,
findNext
将把树导航到同级节点,而
find
将只导航到子节点


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

HTML是大量的,不适合,试图尽可能地缩短所有内容。如果不看到html块和预期结果,就不可能真正回答问题,因为它们工作得非常好,也大大减少了代码的执行时间:)只需检查每个find方法中的None即可。。。或者使用阵列版本。
divsoup = soup.find('div', {'class': 'tabsBody'})
ds_data = divsoup.find(text=pattern).findNext('div', {'class': 'ds_data'})