【Python】定期的にWebサイトを監視して更新を検知するスクリプトの作成方法

【Python】定期的にWebサイトを監視して更新を検知するスクリプトの作成方法 Python

Webサイトの更新をいち早くキャッチしたいとき、手動で何度もアクセスして確認するのは効率が悪いものです。Pythonを使えば、対象のWebページを定期的に監視し、内容に変化があった場合に通知を受け取るスクリプトを簡単に作成できます。

この記事では、初心者でも実装できるよう、必要なライブラリやコードの解説を交えて、更新検知スクリプトの作成方法を紹介します。

必要なライブラリをインストールする

今回使用するライブラリは以下の3つです。

  • requests:WebページのHTMLを取得する
  • hashlib:ページの内容をハッシュ化して前回との違いを比較
  • time:一定間隔で監視を繰り返すための待機処理

まずは、以下のコマンドで必要なライブラリをインストールしてください。

pip install requests

※hashlibとtimeはPython標準ライブラリのためインストール不要です。

スクリプトの全体構成

以下がWebページの更新を監視する基本的なPythonスクリプトです。

import requests
import hashlib
import time

# 監視対象のURL
url = 'https://example.com'

# 初期ハッシュ値
previous_hash = ''

# 監視間隔(秒単位)
interval = 300  # 5分

def get_page_hash(url):
    try:
        response = requests.get(url)
        response.raise_for_status()
        return hashlib.sha256(response.text.encode('utf-8')).hexdigest()
    except requests.exceptions.RequestException as e:
        print('ページの取得に失敗しました:', e)
        return None

while True:
    current_hash = get_page_hash(url)

    if current_hash is None:
        print("再試行します...")
    elif previous_hash and current_hash != previous_hash:
        print('ページの内容が更新されました!')
        # ここに通知処理を追加することも可能
    else:
        print('変更はありません')

    previous_hash = current_hash
    time.sleep(interval)

仕組みの解説

このスクリプトでは、指定したURLのHTMLを取得し、内容全体をSHA-256でハッシュ化しています。前回取得したハッシュと比較し、差があれば「更新された」と判断します。

通知機能は今回は標準出力にとどめていますが、メール送信やLINE通知、Slack連携などにも拡張可能です。

定期実行する方法

このスクリプトは無限ループで定期実行しますが、以下の方法でバックグラウンド運用も可能です。

  • ターミナルで起動しっぱなしにする
  • nohupやscreenコマンドを使って常時実行
  • Windowsならタスクスケジューラ、Linuxならcronに登録

まとめ

Pythonを使えば、わずかなコードでWebページの変化を監視するツールが作成できます。公式発表ページやブログ、情報サイトなど、常に変化を追いたいページがある場合にとても便利です。

定期監視に加えて、通知機能の拡張や特定要素の監視などを取り入れることで、より実用的なスクリプトに進化させることもできます。ぜひ一度試してみてください。