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

2024-05-03 12:20:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

例如,使用html文档中的这一行:

<ul data-bin="Sdafdo39">

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


Tags: 文档元素databin属性htmlul办法
2条回答

您可以使用find_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']

更准确一点

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


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

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})]


相关问题 更多 >