2017-07-02 55 views
3

我已经设法拉出了我正在抓取的一个站点的大部分属性,但试图提取div声明器本身内的某些东西的值。获取属性名称,而不是与BS4的值

具体地,假设以下几点:

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

我内部数据的itemid> ABC值之后。

我似乎无法得到一些东西,看不到div内的值:即红色拖鞋,这不是我所追求的。

我曾尝试以下,没有运气:

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

任何想法?

回答

4

您可以使用带谓词的find_all来缩小搜索范围,然后使用字典索引来访问该特定属性。

from bs4 import BeautifulSoup 

soup = BeautifulSoup(text, 'html5lib') 

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

如果您想进一步缩小搜索范围,你可以添加更多的谓词到你的字典,像这样:

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

@NickP:'html5lib'可能未安装。您可能需要下载它。 – Rahul

相关问题