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サイトから情報を取得することもできます。例えば、商品名や価格などの情報を取得することができます。



![[Python]Global Default Seedを使用したRandom Datetime生成法](https://machine-learning-skill-up.com/knowledge/wp-content/uploads/2023/12/1-1328.jpg)

