如何从BeautifulSoup4中的html标签中找到特定的数据属性?

use*_*398 6 html python beautifulsoup web-scraping

有没有办法只使用html中的data属性来查找元素,然后获取该值?

例如,在html doc中使用此行:

<ul data-bin="Sdafdo39">
Run Code Online (Sandbox Code Playgroud)

如何Sdafdo39通过在整个html doc中搜索具有该data-bin属性的元素来检索?

xec*_*cgr 19

更准确一点

[item['data-bin'] for item in bs.find_all('ul', attrs={'data-bin' : True})]
Run Code Online (Sandbox Code Playgroud)


这样,迭代列表只有具有您要查找的attr的ul元素

from bs4 import BeautifulSoup
bs = BeautifulSoup(html_doc)
html_doc = """<ul class="foo">foo</ul><ul data-bin="Sdafdo39">"""
[item['data-bin'] for item in bs.find_all('ul', attrs={'data-bin' : True})]
Run Code Online (Sandbox Code Playgroud)



the*_*eye 8

您可以使用find_allmethod获取所有标签,并根据在其属性中找到的“ data-bin”进行过滤,将获得包含标签的实际标签。然后我们可以像这样简单地提取对应的值

from bs4 import BeautifulSoup
html_doc = """<ul data-bin="Sdafdo39">"""
bs = BeautifulSoup(html_doc)
print [item["data-bin"] for item in bs.find_all() if "data-bin" in item.attrs]
# ['Sdafdo39']
Run Code Online (Sandbox Code Playgroud)