Beautiful Soup#
How to use#
Beautiful Soupは、Pythonのパーサーライブラリであり、HTMLやXMLなどのマークアップ言語からデータを抽出するために使用されます。
以下にBeautiful Soupの基本的な使い方の例を示します。
まず、Beautiful Soupをインストールする必要があります。pipを使用してインストールできます。
インストールが完了したら、次のようにBeautiful Soupを使用してデータを抽出できます。
from bs4 import BeautifulSoup
# 解析するHTMLデータ
html_data = '''
<html>
<body>
<h1>Beautiful Soupの基本的な使い方</h1>
<p>Beautiful SoupはPythonのパーサーライブラリで、HTMLやXMLなどのマークアップ言語からデータを抽出するために使用されます。</p>
<ul>
<li>データの抽出</li>
<li>タグの検索</li>
<li>属性の抽出</li>
</ul>
</body>
</html>
'''
# BeautifulSoupオブジェクトを作成
soup = BeautifulSoup(html_data, 'html.parser')
# タグを検索してデータを抽出する例
title = soup.find('h1').text
print('タイトル:', title)
paragraph = soup.find('p').text
print('段落:', paragraph)
# タグの属性を抽出する例
list_items = soup.find_all('li')
print('リスト項目:')
for item in list_items:
print(item.text)
このコードでは、Beautiful Soupを使用してHTMLデータを解析し、タグを検索してデータを抽出しています。
findメソッドを使用して単一の要素を取得し、find_allメソッドを使用して複数の要素を取得します。
それぞれの要素からtext属性を使用してテキストデータを取得できます。
この例では、<h1>
タグと<p>
タグのデータを抽出し、<li>
タグのリスト項目を取得して表示しています。
Beautiful Soupには他にもさまざまな機能があり、[]公式ドキュメント(https://www.crummy.com/software/BeautifulSoup/bs4/doc/)を参照。
request で データ取得し解析#
BeautifulSoup とrequestsをinstall。lxml はhtml パーサ。
pip install beautifulsoup4
pip install requests
pip install lxml
import requests
import lxml
from bs4 import BeautifulSoup
url = 'https://www.hogehoge.co.jp'
response = requests.get(url)
soup = BeautifulSoup(response.text, "lxml")
メソッド#
メソッド | 説明 |
---|---|
find() |
最初に一致した要素を取得 |
find_all() |
引数に一致する 全ての 要素を取得 |
正規表現#
取得した要素に対して正規表現で処理する方法はいかのとおり。
User-Arguments#
この例では、requestsモジュールを使用して指定したURLからHTMLデータを取得しています。 requests.get(url)でGETリクエストを送信し、response.textでHTMLデータを取得します。 その後、Beautiful Soupを使用してHTMLデータを解析し、データを抽出しています。
requestsモジュールを使用してリクエストを送信する際に、ヘッダー情報を調整することで、アクセスを人間が行っているように見せることができます。 headersという変数にヘッダー情報を指定しています。User-Agentヘッダーでは、特定のブラウザ(ここではChrome)でのアクセスと見せかけています。 Accept-Languageヘッダーでは、言語設定を指定しています。
import requests
from bs4 import BeautifulSoup
import lxml
# URLからHTMLデータを取得する関数
def get_html_data(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
'Accept-Language': 'en-US,en;q=0.9',
}
response = requests.get(url, headers=headers)
html_data = response.text
return html_data
# 解析するウェブページのURLを指定
url = 'https://example.com'
html_data = get_html_data(url)
# BeautifulSoupオブジェクトを作成(lxmlパーサーを使用)
soup = BeautifulSoup(html_data, 'lxml')
# タグを検索してデータを抽出する例
title = soup.find('h1').text
print('タイトル:', title)
paragraph = soup.find('p').text
print('段落:', paragraph)
# タグの属性を抽出する例
list_items = soup.find_all('li')
print('リスト項目:')
for item in list_items:
print(item.text)
上記のコードでは、get_html_dataという関数を定義し、リクエストを送信してHTMLデータを取得しています。 その後、取得したHTMLデータをBeautiful Soupで解析してデータを抽出しています。
必要なURLを指定して、get_html_data関数を呼び出すことで、アクセスを人間が行っているように見せながらHTMLデータを取得し、Beautiful Soupで解析することができます。
また、BeautifulSoupの引数に'lxml'を指定しています。これにより、lxmlパーサーが使用されます。