Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python BeautifulSoup-获取属性的所有值_Python_Web Scraping_Beautifulsoup - Fatal编程技术网

Python BeautifulSoup-获取属性的所有值

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>

我有一个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>
此外,我尝试:-

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=…
一起使用的内容。同时,您是否阅读过,或者通过查看在线随机示例来猜测规则?