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 スクレイピングに利用されます。 実行例 次のコ[…]
以上