2017-07-02 20 views
3

私は掻き集めているサイトのさまざまな属性の大部分を引き出すことができましたが、div宣言子自体の中で何かの値を抽出しようとしています。BS4で値ではなく属性名を取得する

具体的には、以下の仮定:

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

私は> ABC-itemidのデータ内の値の後にしています。

私はdiv内の値を見ていない何かを得ることができません。つまり、私は後になっているものではない赤いスリッパです。

私は運なしで、次のことを試してみました:

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

を任意のアイデア?

答えて

4

述語でfind_allを使用して検索範囲を絞り込み、dict-like索引付けを使用して特定の属性にアクセスできます。

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

関連する問題