有没有办法只使用html中的data属性来查找元素,然后获取该值?
例如,在html doc中包含此行:
<ul data-bin="Sdafdo39">
如何通过在整个html文档中搜索具有Sdafdo39
属性的元素来检索data-bin
?
答案 0 :(得分:17)
更准确一点
[item['data-bin'] for item in bs.find_all('ul', attrs={'data-bin' : True})]
这样,迭代列表只有具有您要查找的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})]
答案 1 :(得分:5)
您可以使用find_all
方法获取基于&#34; data-bin&#34;的所有标记和过滤在其属性中找到将获得我们获得它的实际标签。然后我们可以简单地提取与其对应的值,如此
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']
答案 2 :(得分:0)
您可以使用gazpacho在几行中解决此问题:
首先,导入html并将其变成Soup
对象:
from gazpacho import Soup
html = """<ul data-bin="Sdafdo39">"""
soup = Soup(html)
然后,您只需搜索“ ul”标签并提取href属性:
soup.find("ul").attrs["data-bin"]
# Sdafdo39