Pythonで宅配ボックス&電動自転車残数を自動チェック!Webスクレイピング入門

Pythonで宅配ボックス&電動自転車残数を自動チェック!Webスクレイピング入門

いちいちウェブにアクセスして確認するのも面倒なので、フルタイムシステム(貸出自転車/宅配ボックス等)のリアルタイム在庫数チェックするpythonスクリプトを作成してみます。


事前準備と法的配慮

  • Python環境の構築 (requestsBeautifulSoup4 をインストール)

  • robots.txtmeta robotsタグ や規約を事前にチェックし、スクレイピング可否を確認済
    ここ重要

  • アクセス間隔を空けて、負荷を抑える


スクリプト(残台数の取得)

import requests
from bs4 import BeautifulSoup

def fetch_remaining_bikes(url):
    resp = requests.get(url)
    resp.raise_for_status()  # エラーチェック

    soup = BeautifulSoup(resp.text, "html.parser")

    # <td class="count">5</td> のような構造を探す
    # 施設が複数ある場合には find_all
    td = soup.find("td", class_="count")
    if not td:
        raise ValueError("残り台数の要素が見つかりませんでした")

    count_text = td.get_text(strip=True)
    try:
        return int(count_text)
    except ValueError:
        raise ValueError(f"数値変換に失敗しました: {count_text!r}")

if __name__ == "__main__":
    url = "https://f-cs.jp/wcsv2/index.php?id=<宅配ボックスID>"
    try:
        remaining = fetch_remaining_bikes(url)
        print(f"残り電動自転車台数: {remaining} 台")
    except Exception as e:
        print(f"エラーが発生しました: {e}")

 

  • requests + BeautifulSoup 

  • HTML構造に依存するため、スクレイプ対象のクラス名などは要確認

  • 実行結果例
    残り電動自転車台数:7台

まとめ

  • robots.txt・metaタグでアクセス許可を確認

  • リクエストヘッダーにUser‑Agentを明記

  • 適度にリクエスト間隔をあけ、過負荷回避

サーバ&テクノロジ

Posted by 納戸 工房