Python の Beautiful Soup を使った Webページのスクレイピング
このページでは、Python の Beautiful Soup を使った Webページのスクレイピングについて、簡単にまとめています。
Webページの取得には、下記のページで解説している Requests ライブラリを使用しています。
Python の Requests ライブラリを使った Web データの取得
https://note.motnote.com/2023/08/05/web-requests/
※検証環境は、Windows 10 Pro 64bit 版で行いました。
解説内容
1. Beautiful Soup ライブラリのインストール
以下のコマンドを実行して、Beautiful Soup ライブラリをインストールします。
コマンド:pip install requests # 未インストールの場合
:pip install beautifulsoup4
※下の画像では両方ともインストール済みでした。
2. Web ページの取得とスクレイピング
Requests モジュールを使って、下記のURLのHTMLデータを取得し、Beautiful Soup モジュールでスクレイピングを行います。
URL:https://note.motnote.com/
今回は、以下の①②の処理を行いました。
① HTMLデータを取得し、先頭の1000文字を出力して確認
② BeautifulSoup で HTML を解析
・解析内容を確認(個別タグ)
・解析内容を確認(find_allメソッド)
実行コマンド:python beutiful_soup.py
# Requests モジュールを使ってHTMLデータを取得し
# Beutiful Sorpを使ってスクレイピングを行う
import requests
from bs4 import BeautifulSoup
try:
# Webリクエスト
res = requests.get('https://note.motnote.com')
res.raise_for_status()
if res.status_code == 200:
# ① HTMLデータ確認
print('-- HTMLデータの先頭 1000 文字 ---------------------')
# 改行とタブを置換(削除)
html = res.text.replace('\r\n', "").replace('\t', "")
# 先頭の 1000 文字を出力
print(html[:1000])
print('--------------------------------------------------')
# ② BeautifulSoup で HTML を解析
soup = BeautifulSoup(html, 'html.parser')
# 解析内容を確認(個別タグ)
print('--------------- <title>タグ ---------------')
print(soup.title)
print('--------------- <meta>タグ ----------------')
print(soup.meta)
print('--------------- <footer>タグ --------------')
print(soup.footer)
print('-------------------------------------------')
# 解析内容を確認(find_allメソッド)
# 全ての <a>タグを取得し、先頭10件のタイトルとURLを出力
print('=============== <a>タグ 先頭10件 ===============')
tags = soup.find_all('a')
for t in tags[:10]:
print('Title:', t.text) # タイトル
print('URL:', t['href']) # URL
print('================================================')
else:
print("Error status code : ", str(res.status_code))
except requests.exceptions.RequestException as e:
print("Exception : ", e)
結果確認
① HTMLデータを取得し、先頭の1000文字を出力して確認
② BeautifulSoup で HTML を解析
解析内容を確認(個別タグ)
<title><meta><footer>タグのデータが出力されました。
解析内容を確認(find_allメソッド)
<a>タグのタイトル(TEXT)とURLが出力されました。
以上で、Beautiful Soup を使った Webページのスクレイピング処理の確認は終了です。