Python の Beautiful Soup モジュールについて

Beautiful Soup モジュールとは

HTML や XML ファイルからデータを取得し、解析するライブラリです。
主に requests モジュールと組み合わせて、Web スクレイピングに使用されます。

実行例

次のコードを実行します。

import requests
from bs4 import BeautifulSoup
res = requests.get('https://news.yahoo.co.jp/') 
soup = BeautifulSoup(res.text,'lxml')
for a in soup.find_all('a'):
    print(a.get('href'))

出力結果は次のとおりです。

https://www.yahoo.co.jp/
https://www.yahoo-help.jp/app/home/service/news/
https://news.yahoo.co.jp/
…(中略)…

解説

コードの記述方法は、次のとおりです。

BeautifulSoup(解析対象の HTML/XML, 利用するパーサー)

1 つ目の引数には、解析対象の HTML/XML を指定し、2 つ目の引数は解析に利用するパーサー(読み取り方式)を指定します。

事前準備

必要に応じて pip をインストールします。

sudo zypper install python3-pip

beautifulsoup モジュールをインストールします。

pip3 install beautifulsoup4

パーサーには、html.parser や lxml があり、標準では html.parser が使用されます。
lxml は html.parser よりも高速に処理ができますが、外部依存関係です。
lxml ライブラリを使用する場合は、pip を使用してインストールする必要があります。

pip install lxml
Web ページの全 HTML 文を表示

requests モジュールを使って Web ページをダウンロードし、レスポンスの text 属性を BeautifulSoup に渡します。

import requests
from bs4 import BeautifulSoup
res = requests.get('https://news.yahoo.co.jp//') 
soup = BeautifulSoup(res.text,'lxml')
print(soup)
Web ページのリンク情報のみ表示

必要な情報を絞ることも可能です。
例えば、for 文で、取得した内容(soup 変数に格納された内容)から 全ての a タグを抽出し、リンク 先 URL(href 属性)を表示する場合は以下のようになります。

import requests
from bs4 import BeautifulSoup
res = requests.get('https://automatetheboringstuff.com/files/rj.txt') 
soup = BeautifulSoup(res.text,'lxml')
for a in soup.find_all('a'):
    print(a.get('href'))
関連記事

requests モジュールとは HTTP 通信ライブラリで、Web サイトの情報を収集することができます。主に Beautiful Soup モジュールと組み合わせて、Web スクレイピングに使用されます。 実行例 […]

関連記事

Selenium モジュールとは ブラウザを操作できるモジュールです。主に requests モジュールや Beautiful Soup モジュールと組み合わせて WEB スクレイピングに利用されます。 実行例 次のコ[…]

以上