Python BeautifulSoup-获取属性的所有值
我有一个HTML标记,如下所示:-Python BeautifulSoup-获取属性的所有值,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我有一个HTML标记,如下所示:- <div class="a b c" some-attribute="1"> <div><div> </div> <div class="a b c" some-attribute="2"> <div><div> </div> <div class="a b c" some-attribute="3"> <div>
<div class="a b c" some-attribute="1">
<div><div>
</div>
<div class="a b c" some-attribute="2">
<div><div>
</div>
<div class="a b c" some-attribute="3">
<div><div>
</div>
此外,我尝试:-
links = soup.findAll('div', {'class': 'a'})
[link.get('some-attribute') for link in links]
这也不起作用
我错在哪里?或者上述问题的正确解决方案是什么?您可以指定要搜索的div类:
import re
vals = [i['some-attribute'] for i in soup(content, 'html.parser').find_all('div', {'class':re.compile('someclass\d+')})]
输出:
['1', '2', '3']
[['1'], ['2'], ['3']]
使用dict查找所有div:
soup.find_all('div',{“some attribute”:True})
输出:
['1', '2', '3']
[['1'], ['2'], ['3']]
展平列表或您需要的任何内容。您可以使用has\u attr(“某些属性”)
检查标记是否包含您的attr
演示:
s = """<div class="a b c" some-attribute="1">
<div><div>
</div>
<div class="a b c" some-attribute="2">
<div><div>
</div>
<div class="a b c" some-attribute="3">
<div><div>
</div>
<div class="a b c">
<div><div>
</div>"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(s, "html.parser")
res = [i.attrs["some-attribute"] for i in soup.find_all("div", class_ = "a b c") if i.has_attr("some-attribute")]
print(res)
[u'1', u'2', u'3']
re.compile做什么?另外,请查看更新的问题。我已经更新了class属性的值。“不工作”是什么意思?因为至少是最后一个版本。而第一个版本不起作用的唯一原因是
some属性
不是有效的Python标识符。“帮助”解释了这两种处理方法,但既然您在下一次尝试中已经使用了这两种方法中的一种,您应该已经知道了。@abarnert-2方法。另一种方法是什么?将该属性键值对转换为dict并直接传递该dict,或者将所有属性键值对(在本例中,只有一个)转换为可以与attrs=…
一起使用的内容。同时,您是否阅读过,或者通过查看在线随机示例来猜测规则?