Python 如何从BeautifulSoup4中的html标记中查找特定的数据属性?

Python 如何从BeautifulSoup4中的html标记中查找特定的数据属性?,python,html,web-scraping,beautifulsoup,Python,Html,Web Scraping,Beautifulsoup,有没有办法只使用html中的data属性来查找元素,然后获取该值 例如,在html文档中使用此行: <ul data-bin="Sdafdo39"> 如何通过在整个html文档中搜索具有data bin属性的元素来检索Sdafdo39?您可以使用find\u all方法来获取所有标记,并基于在其属性中找到的“data bin”进行过滤,将获得获得它的实际标记。然后我们可以简单地提取它对应的值,如下所示 from bs4 import BeautifulSoup html_doc

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

例如,在html文档中使用此行:

<ul data-bin="Sdafdo39">

如何通过在整个html文档中搜索具有
data bin
属性的元素来检索
Sdafdo39

您可以使用
find\u all
方法来获取所有标记,并基于在其属性中找到的“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']
从bs4导入美化组
html_doc=“”
    “ bs=美化组(html\U文档) 为bs中的项目打印[item[“data bin”]。如果item.attrs中的“data bin”,则为find_all() #['Sdafdo39']
更准确一点


这样,迭代列表只包含具有您想要查找的属性的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})]
从bs4导入美化组
bs=美化组(html\U文档)
html_doc=“”
    foo
    “ [bs.find_all('ul',attrs={'data-bin':True}中的项的项['data-bin']

您只需几行即可解决此问题:

首先,导入html并将其转换为
Soup
对象:

来自gazpacho进口汤的

html=“”
    “” 汤=汤(html)
然后,您只需搜索“ul”标记并提取href属性:

soup.find(“ul”).attrs[“数据箱”]
#Sdafdo39
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})]