我正在尝试使用 BS4 在 div 类中查找具有多个值的 ID,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,我当前的代码是soup =
bs(size.text,"html.parser")
sizes = soup.find_all("div",{"class":"size"})
size = sizes[0]["data-test5-uk"]
size.text 来自对带有 html 的站点的 get 请求,但它返回
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'
感谢帮助!
最佳答案
说明,然后是解决方案。
.find_all('tag')
用于查找该标签的所有实例,稍后我们可以循环遍历它们。
.find('tag')
用于查找ONLY第一个实例。
我们可以使用 ['arg']
提取参数的内容或者 。 .get('arg')
这是相同。
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']
? - 您尝试提取 ["data-test5-uk"]
该分区的。 <div class="size ">
div 没有类似的参数,除了 class="size "
关于python - 如何在具有多个值的 div 类中查找 ID BS4 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50078736/