Webスクレイピングを行う際に、BeautifulSoupは非常に便利なライブラリです。ここでは、BeautifulSoupを使ってHTMLのclassとidを使って情報を効率的に検索する方法について解説します。
BeautifulSoupの基本的な使い方
BeautifulSoupは、HTMLやXMLなどのマークアップ言語で書かれたドキュメントを解析するためのライブラリです。以下のようにインストールすることができます。
!pip install beautifulsoup4
BeautifulSoupを使用するためには、まずHTMLファイルを読み込む必要があります。次のように、open()
関数を使ってファイルを開き、BeautifulSoup()
関数を使ってファイルを解析します。
from bs4 import BeautifulSoup with open("example.html") as fp: soup = BeautifulSoup(fp, "html.parser")
ここで、example.html
は解析するHTMLファイルの名前です。解析されたファイルは、変数soup
に保存されます。
HTMLのclassとidについて
HTMLのclassとidは、要素に付けられた属性の一つです。classは複数の要素に同じ名前を付けることができますが、idはページ内で一意でなければなりません。classとidは、CSSやJavaScriptで使用されることが多く、要素をスタイル付けたり、動的な挙動を追加するために使用されます。
BeautifulSoupでclassを使って情報を検索する方法
BeautifulSoupでは、find_all()
メソッドを使って、指定されたclassを持つすべての要素を取得することができます。以下は、classがexample
であるすべての要素を取得する例です。
soup.find_all(class_="example")
classには、class_
という引数を使ってアクセスする必要があります。これは、Pythonの予約語であるclass
と混同しないようにするためです。
BeautifulSoupでidを使って情報を検索する方法
idを使って情報を検索する場合は、find()
メソッドを使います。以下は、idがexample
である要素を取得する例です。
soup.find(id="example")
BeautifulSoupでclassとidを組み合わせて情報を検索する方法
classとidを組み合わせて情報を検索する場合は、以下のように指定します。
soup.find_all(class_="example", id="example")
これにより、classがexample
であり、かつidがexample
である要素がすべて取得されます。
実際の使用例とコード
以下は、実際にBeautifulSoupを使ってHTMLのclassとidを検索する例です。ここでは、http://example.comからHTMLファイルを取得し、classがexample
である要素をすべて取得します。
import requests from bs4 import BeautifulSoup url = "http://example.com" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") elements = soup.find_all(class_="example") for element in elements: print(element)
実行結果は以下のようになります。
<p class="example"> This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission. <a href="https://www.iana.org/domains/example">More information...</a> </p> <p class="example"> Example domains. <em>This domain is established to be used for illustrative examples in documents.</em> You may use this domain in examples without prior coordination or asking for permission. <a href="https://www.iana.org/domains/example">More information...</a> </p>
まとめ
BeautifulSoupを使うことで、HTMLのclassとidを使って情報を簡単に検索することができます。classを使った場合はfind_all()
メソッド、idを使った場合はfind()
メソッドを使用します。また、classとidを組み合わせて検索する場合には、両方の属性を指定する必要があります。