BeautifulSoupとは
BeautifulSoupは、PythonでHTMLやXMLなどのマークアップ言語を解析するためのライブラリです。HTMLやXMLは入れ子構造を持っているため、BeautifulSoupを使うことで、入れ子構造を解析して必要な情報を取得することができます。
BeautifulSoupのインストール方法
BeautifulSoupを使うには、まずインストールする必要があります。以下のコマンドを実行して、BeautifulSoupをインストールしてください。
pip install beautifulsoup4
HTMLと入れ子構造の基本
HTMLは、タグと属性で構成されています。タグは、要素を表し、属性は、その要素の情報を表します。HTMLは、入れ子構造を持っており、要素の中に要素を入れることができます。
例えば、以下のようなHTMLがあった場合、<div>
要素の中に<p>
要素が入っており、<p>
要素の中にテキストが入っています。
<div> <p>テキスト</p> </div>
このように、HTMLは入れ子構造を持っており、BeautifulSoupを使うことで、この入れ子構造を解析することができます。
BeautifulSoupで入れ子構造の解析方法
BeautifulSoupを使うには、まず解析したいHTMLをパースする必要があります。以下のように、BeautifulSoup
クラスを使ってHTMLをパースしてください。
from bs4 import BeautifulSoup html = ''' <div> <p>テキスト</p> </div> ''' soup = BeautifulSoup(html, 'html.parser')
これで、HTMLがsoup
オブジェクトにパースされました。次に、soup
オブジェクトを使って、入れ子構造を解析していきます。
例えば、<p>
要素の中のテキストを取得する場合は、以下のようにfind
メソッドを使います。
text = soup.find('p').text
これで、<p>
要素の中のテキストがtext
変数に格納されました。
入れ子構造解析の具体例
以下のようなHTMLがあった場合、<div>
要素の中に<p>
要素が3つ入っており、<p>
要素の中にはそれぞれテキストが入っています。
<div> <p>テキスト1</p> <p>テキスト2</p> <p>テキスト3</p> </div>
このHTMLを解析して、<p>
要素の中のテキストを取得するには、以下のようにfind_all
メソッドを使います。
for p in soup.find_all('p'): text = p.text print(text)
これで、<p>
要素の中のテキストが順に出力されます。
BeautifulSoupでの入れ子構造の活用例
BeautifulSoupを使って、Webサイトから情報を取得することができます。例えば、以下のようなHTMLがあった場合、<table>
要素の中に複数の<tr>
要素が入っており、<tr>
要素の中にはそれぞれ商品名と価格が入っています。
<table> <tr> <td>商品A</td> <td>100円</td> </tr> <tr> <td>商品B</td> <td>200円</td> </tr> <tr> <td>商品C</td> <td>300円</td> </tr> </table>
このHTMLから、商品名と価格を取得するには、以下のようにfind_all
メソッドを使います。
for tr in soup.find('table').find_all('tr'): td_list = tr.find_all('td') if len(td_list) == 2: name = td_list[0].text price = td_list[1].text print(name, price)
これで、商品名と価格が順に出力されます。
まとめ
BeautifulSoupを使うことで、HTMLやXMLなどのマークアップ言語を解析し、必要な情報を取得することができます。HTMLやXMLは入れ子構造を持っており、BeautifulSoupを使うことで、この入れ子構造を解析することができます。
また、BeautifulSoupを使ってWebサイトから情報を取得することもできます。例えば、商品名や価格などの情報を取得することができます。