スクレイピング 中級

85. class属性で絞り込む

タグ名だけでは絞り込めないとき

実際のWebページでは、同じタグ名(例えばdiv)がページ内に何十個もあり、タグ名だけの指定では欲しい部分だけを取り出せないことがほとんどです。そんなときはHTMLのclass属性を使って絞り込みます。

⚠️ 注意:classはPythonの予約語(クラスを定義するときのclass)と重なってしまうため、find_all('div', class_='item')のように、末尾にアンダースコアを付けたclass_という引数名を使います。書き忘れやすいポイントなので注意しましょう。

サンプルコード

from bs4 import BeautifulSoup

html = '<div class="price">100円</div><div class="note">送料込み</div><div class="price">200円</div>'
soup = BeautifulSoup(html, 'html.parser')

prices = soup.find_all('div', class_='price')
for p in prices:
    print(p.text)
同じdivタグの中でも、class_='price'を指定することで「classがpriceのdivタグ」だけに絞り込んで取得できています。classがnoteの要素は取得されません。

📝 練習問題

練習問題:'<span class="tag">Python</span><span class="tag">AI</span><span class="label">おすすめ</span>'というHTMLから、classが'tag'のspanだけを表示してください。