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を使った基本的なスクレイピングの準備が整いました。ぜひ試してみてください!
コメント