スクレイピング 中級

84. find_all()で複数のタグを取得する

すべて取得したいときはfind_all()

find()が最初の1つだけを返すのに対して、find_all(タグ名)は条件に一致するすべてのタグをまとめて返します。返ってきた結果はfor文でそのまま1つずつ処理できるため、「ページ内のすべての見出しを一覧にしたい」というような場面でよく使われます。

サンプルコード

from bs4 import BeautifulSoup

html = '<ul><li>りんご</li><li>バナナ</li><li>みかん</li></ul>'
soup = BeautifulSoup(html, 'html.parser')

items = soup.find_all('li')
for item in items:
    print(item.text)
find_all('li')で、HTML内のすべての<li>タグをまとめて取得しています。for文でitemsを1つずつ処理し、それぞれのitem.textでタグの中身を取り出しています。

📝 練習問題

練習問題:'<p>お知らせ1</p><p>お知らせ2</p><p>お知らせ3</p>'というHTMLから、find_all()を使ってすべてのpタグのテキストを表示してください。