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 ライブラリのインストール
  2. Web ページの取得とスクレイピング

1. Beautiful Soup ライブラリのインストール

以下のコマンドを実行して、Beautiful Soup ライブラリをインストールします。

 コマンド:pip install requests # 未インストールの場合
     :pip install beautifulsoup4
     ※下の画像では両方ともインストール済みでした。

Beautiful Soup ライブラリのインストール
Beautiful Soup ライブラリのインストール

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文字を出力して確認

HTML確認
HTML確認

② BeautifulSoup で HTML を解析
  解析内容を確認(個別タグ)

<title><meta><footer>タグのデータが出力されました。

解析内容を確認(個別タグ)
解析内容を確認(個別タグ)

解析内容を確認(find_allメソッド)

<a>タグのタイトル(TEXT)とURLが出力されました。

解析内容を確認(find_allメソッド)
解析内容を確認(find_allメソッド)

以上で、Beautiful Soup を使った Webページのスクレイピング処理の確認は終了です。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です