使用BS4获取属性名称而不是值

时间:2017-07-02 15:15:52

标签: python web-scraping beautifulsoup

我已经设法提取了我正在抓取的网站的大部分各种属性,但是试图在div声明器本身中提取某些内容的值。

具体来说,假设如下:

<div class="item" data-color="red" data-itemid="abc">Red Slippers</div>

我在data-itemid&gt;中的值之后ABC

我似乎无法得到一些没有看到div内部值的东西:即Red Slippers,这不是我追求的。

我试过以下,没有运气:

item_id = soup.find('data-itemid')

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您可以将find_all与谓词一起使用来缩小搜索范围,然后使用类似dict的索引访问该特定属性。

from bs4 import BeautifulSoup

soup = BeautifulSoup(text, 'html5lib')

items = soup.find_all('div', {'class' : 'item'})
for item in items:
    print(item['data-itemid'])

如果您希望进一步缩小搜索范围,可以在dict中添加更多谓词,如下所示:

{'class' : 'item', 'data-color' : 'red', ...} # and so on