我试图在div类中找到一个ID,它使用BS4有多个值,HTML是
<div class="size ">
<a class="selectSize"
id="25746"
data-ean="884751585616"
ata-test="170"
data-test1=""
data-test2="1061364-41"
data-test3-original="41"
data-test4-eu="41"
data-test5-uk="7"
data-test6-us="8"
data-test-cm="26"
</div>
</div>
我想找到data-test5-uk,我目前的代码是汤=
bs(size.text,"html.parser")
sizes = soup.find_all("div",{"class":"size"})
size = sizes[0]["data-test5-uk"]
size.text是从带有html的网站获取请求,但它返回
size = sizes[0]["data-test5-uk"]
File "C:\Users\ninja_000\AppData\Local\Programs\Python\Python36\lib\site-packages\bs4\element.py", line 1011, in __getitem__
return self.attrs[key]
KeyError: 'data-test5-uk'
非常感谢帮助!
答案 0 :(得分:1)
解释,然后是解决方案。
.find_all('tag')
用于查找该标记的所有实例,我们稍后可以循环遍历它们。
.find('tag')
用于查找仅第一个实例。
我们可以使用['arg']
或.get('arg')
提取参数的内容,它是 SAME 。
from bs4 import BeautifulSoup
html = '''<div class="size ">
<a class="selectSize"
id="25746"
data-ean="884751585616"
ata-test="170"
data-test1=""
data-test2="1061364-41"
data-test3-original="41"
data-test4-eu="41"
data-test5-uk="7"
data-test6-us="8"
data-test-cm="26"
</div>'''
soup = BeautifulSoup(html, 'lxml')
one_div = soup.find('div', class_='size ')
print( one_div.find('a')['data-test5-uk'])
# your code didn't work because you weren't in the a tag
# we have found the tag that contains the tag .find('a')['data-test5-uk']
# for multiple divs
for each in soup.find_all('div', class_='size '):
# we loop through each instance and do the same
datauk = each.find('a')['data-test5-uk']
print('data-test5-uk:', datauk)
<强>输出强>:
data-test5-uk:7
其他
为什么你的['arg']
? - 你试图提取div的["data-test5-uk"]
。 <div class="size ">
除了一个class="size "