タグの名前で検索(例:soup.find(‘div’), soup.find_all(‘p’))

Beautiful Soupにおける「タグの名前で検索」は、HTMLドキュメント内の特定のタグ要素(例:<div>, <p>, <a>など)を取得するための基本的かつ重要な機能です。以下では、その代表的なメソッドである find()find_all() の使い方を中心に詳しく説明します。


1. soup.find() の概要

  • 目的:指定したタグ名に一致する最初の1つの要素を取得します。

  • 構文

    python
    soup.find('タグ名')
  • 戻り値:該当する最初の Tag オブジェクト、または見つからない場合は None

  • 使用例

    python
    from bs4 import BeautifulSoup html = "<html><body><div>内容1</div><div>内容2</div></body></html>" soup = BeautifulSoup(html, 'html.parser') div_tag = soup.find('div') print(div_tag.text) # 出力: 内容1

2. soup.find_all() の概要

  • 目的:指定したタグ名に一致するすべての要素をリストとして取得します。

  • 構文

    python
    soup.find_all('タグ名')
  • 戻り値:すべての一致したタグのリスト(空の場合は空リスト)

  • 使用例

    python
    div_tags = soup.find_all('div') for tag in div_tags: print(tag.text)
    • 出力:

      内容1 内容2

3. よく使うオプション

find()find_all() には、追加の条件を指定するために以下のような引数も利用できます:

  • class_='クラス名':クラス属性でフィルタリング

  • id='ID名':id属性でフィルタリング

  • attrs={'属性名': '値'}:任意の属性に対してフィルタリング

例:

python
soup.find('div', class_='main') soup.find_all('a', attrs={'href': '#top'})

4. 注意点

  • class はPythonの予約語なので、class_ という表記で指定する必要があります。

  • 複数の属性を組み合わせて検索することも可能です。


まとめ

メソッド 目的 戻り値
find() 最初に一致した1つの要素を取得 TagまたはNone
find_all() 一致するすべての要素を取得 list[Tag]

タグ名を指定して検索することで、HTML構造の中から目的の要素を効率的に抽出できます。これはスクレイピング処理の基本中の基本となる機能です。

ChatGPT4o 生成日:2025/06/19