Python BeautifulSoupの解説用HTML

BeautifulSoupの基本的な使い方

BeautifulSoupはPythonで最も簡単に使えるWebスクレイピングライブラリの一つです。
HTMLやXMLファイルからデータを抽出することができます。

ただし、BeautifulSoupにはいくつかの依存関係があります。例えば、ウェブサイトにリクエストを送るための
requestsライブラリや、データを解析するための外部パーサー(XMLパーサーやHTMLパーサーなど)が必要です。

これらの依存関係があるため、プロジェクト間でコードを移行する際に複雑になることがあり、大規模なWebスクレイピングプロジェクトにはあまり向いていません。

BeautifulSoupの基本的な使い方

BeautifulSoupでウェブサイトをスクレイピングするには、まず2つのライブラリをインポートします。

from bs4 import BeautifulSoup
import requests

一般的なスクレイピングの手順は以下の通りです。

  • ページを取得する(fetching the page)
  • ページの内容を取得する(obtaining the page content)
  • BeautifulSoupオブジェクトを作成する(creating a soup)

例えば、Googleのウェブサイトを取得する場合は、

result = requests.get('https://www.google.com')

のように書きます。

リクエストを送ると、レスポンスが返ってきます。
ここでは、そのレスポンスをresultという変数に格納しています。

次に、ウェブサイトのHTMLコードを取得するには、

html_content = result.text

と書きます。

最後に、BeautifulSoupオブジェクトを作成して、HTMLの要素を解析できるようにします。

soup = BeautifulSoup(html_content, 'xml')  # XMLパーサーを使って解析

このsoupオブジェクトを使うことで、任意のHTML要素を簡単に見つけることができます。

要素の検索方法

例えば、IDで要素を探す場合は、

soup.find(id='IDの値')

と書きます。

クラス名で要素を探す場合は、

soup.find('タグ名', class_='クラス名の値')

のように書きます。

例えば、以下のようなHTMLコードがあるとします。

<article class="main-at">
  <h1>地面師たち</h1>
  <p class="plot">映画のあらすじ</p>
  <div class="script">地面師とは、不動産に関連する詐欺師の一種で...</div>
</article>

この中で、article要素をクラス名で探す場合は、

soup.find('article', class_='main-at')

と書きます。

また、h1要素のようにIDやクラス名がない場合でも、タグ名だけで要素を探すことができます。

soup.find('h1')

複数の同じタグ名の要素を探したい場合は、

soup.find_all('h2')

のようにfind_allメソッドを使います。
find_allは複数の要素をリストで返すため、forループなどで処理することが多いです。

これで、BeautifulSoupを使った基本的なスクレイピングの準備が整いました。ぜひ試してみてください!

 

コメント