Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python bs4在给定标记的所有属性中搜索单词_Python_Html_Selenium Webdriver_Web Scraping_Beautifulsoup - Fatal编程技术网

Python bs4在给定标记的所有属性中搜索单词

Python bs4在给定标记的所有属性中搜索单词,python,html,selenium-webdriver,web-scraping,beautifulsoup,Python,Html,Selenium Webdriver,Web Scraping,Beautifulsoup,我正在开发一个网络刮板,从给定的网站上查找价格标签 我有密码 price = soup.findAll(['div'],{'class':re.compile(r'(.*?price.*?)',re.IGNORECASE)}) 这样,我就能够找到所有具有class属性的div标记,这些属性的值带有price关键字。(包含价格的词语,如数据价格、价格值等) 但是我想检索所有包含price关键字的div标记,而不考虑属性名 例如: 我正在尝试浏览的网站具有以下格式: <div class=&

我正在开发一个网络刮板,从给定的网站上查找价格标签

我有密码

price = soup.findAll(['div'],{'class':re.compile(r'(.*?price.*?)',re.IGNORECASE)})
这样,我就能够找到所有具有class属性的div标记,这些属性的值带有price关键字。(包含价格的词语,如数据价格、价格值等)

但是我想检索所有包含price关键字的div标记,而不考虑属性名

例如:

我正在尝试浏览的网站具有以下格式:

<div class="css-2vqe5n esdkp3p0" data-automation="buybox-price" aria-label="Now $74">$74</div>
74美元
我的代码仅在price关键字出现在class属性中时检索,但在本例中,它出现在data automation属性中


因此,我正在寻找一种解决方案,可以搜索div标记的所有属性,而不仅仅是class标记。

对于此任务,您可以使用带有自定义函数的
.find_all()

例如:

from bs4 import BeautifulSoup


html_text = '''
<div class="css-2vqe5n esdkp3p0" data-automation="buybox-price" aria-label="Now $74">$74</div>
<div class="price value" aria-label="Now $75">$75</div>
<div class="discount-price" aria-label="Now $76">$76</div>
<div class="something_other">other</div>
'''

soup = BeautifulSoup(html_text, 'html.parser')

def is_price(tag):
    for k, v in tag.attrs.items():
        if 'price' in v:
            return True
        elif isinstance(v, list) and any('price' in i for i in v):
            return True


for tag in soup.find_all(is_price):
    print(tag)
从bs4导入美化组
html_text=“”
$74
$75
$76
其他
'''
soup=BeautifulSoup(html_文本'html.parser')
def是_价格(标签):
对于tag.attrs.items()中的k,v:
如果v中的“价格”:
返回真值
elif isinstance(v,列表)和任何(i中的“价格”表示i中的“价格”):
返回真值
用于汤中的标签。查找所有(是价格):
打印(标签)
印刷品:

<div aria-label="Now $74" class="css-2vqe5n esdkp3p0" data-automation="buybox-price">$74</div>
<div aria-label="Now $75" class="price value">$75</div>
<div aria-label="Now $76" class="discount-price">$76</div>
74美元
$75
$76

谢谢这正是我需要的!