すべて取得したいときはfind_all()
find()が最初の1つだけを返すのに対して、find_all(タグ名)は条件に一致するすべてのタグをまとめて返します。返ってきた結果はfor文でそのまま1つずつ処理できるため、「ページ内のすべての見出しを一覧にしたい」というような場面でよく使われます。
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)練習問題:'<p>お知らせ1</p><p>お知らせ2</p><p>お知らせ3</p>'というHTMLから、find_all()を使ってすべてのpタグのテキストを表示してください。
from bs4 import BeautifulSoup
html = '<p>お知らせ1</p><p>お知らせ2</p><p>お知らせ3</p>'
soup = BeautifulSoup(html, 'html.parser')
for tag in soup.find_all('p'):
print(tag.text)