beauthulsoup获取属性的所有值

2024-04-25 20:21:35 发布

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

我有一个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>
</div>

如何获取some-attribute的所有值的列表?在

我已经试了很多次了,但没有找到任何解决办法。在

这就是我试过的。在

类似于找到所有的href[a['href'] for a in soup.find_all('a', href=True)],我尝试了这个方法

^{pr2}$

还有,我尝试过:-在

links = soup.findAll('div', {'class': 'a'})
[link.get('some-attribute') for link in links]

这也不起作用。在

我哪里错了?或者,对于上述问题,正确的解决方案是什么?在


Tags: in标记div列表forhtmllinkattribute
3条回答

使用dict查找所有div:soup.find_all('div', {"some-attribute" : True})

[x.get_attribute_list('some-attribute') for x in soup.find_all('div', {"some-attribute" : True})]

输出:

^{pr2}$

把清单弄平或者你需要的任何东西。在

您可以使用has_attr("some-attribute")来检查标记是否有您的属性。在

演示:

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)

输出:

^{pr2}$

您可以指定要搜索的div类:

import re
vals = [i['some-attribute'] for i in soup(content, 'html.parser').find_all('div', {'class':re.compile('someclass\d+')})]

输出:

^{pr2}$

相关问题 更多 >