DEV Community

Shootacean
Shootacean

Posted on • Originally published at shootacean.com

指定したURLのHTTPステータスを一括でチェックするPythonスクリプト

Image from Gyazo

こんにちは。shootaceanです。

CSVファイルに定義したURLを元にGETリクエストを行い、レスポンスのHTTPステータスをチェックするPythonスクリプトです。

運営しているWEBサービスの検証をする際に利用しました。

pandasのインストール

$ pip3 install pandas
Enter fullscreen mode Exit fullscreen mode

Pythonスクリプト

host, csvFilePath, csvColumnName という変数を変更すれば、ご自身の環境に合わせることができると思います。

import urllib.request
import pandas as pd


host = "https://shootacean.com"
csvFilePath = "urls.csv"
csvColumnName = "uri"


def checkUrl(url):
    """指定したURLにGETリクエストした際のHTTPステータスをチェックする"""
    try:
        # GETリクエストをしてレスポンスを受け取る
        with urllib.request.urlopen(url) as response:
            # HTTPステータスが正常だった場合
            return True, response.code, url
    except urllib.error.HTTPError  as e:
        return False, e.code, url
    except urllib.error.URLError as e:
        if hasattr(e, 'reason'):
            return False, e.reason, url
        elif hasattr(e, 'code'):
            return False, e.code, url


if __name__ == "__main__":
    # CSVファイルを読み込む
    csv = pd.read_csv(csvFilePath)
    # CSVのレコード数分、チェックを繰り返す
    for uri in csv[csvColumnName]:
        url = host + uri
        # チェックを行う
        ok, code, url = checkUrl(url)
        if ok:
            # チェックが成功した場合
            print(code, url)
        else:
            # チェックが失敗場合
            print(code, url)

Enter fullscreen mode Exit fullscreen mode

CSVレイアウト例

使うのは1カラムだけなのでレイアウトは何でも大丈夫です。
1レコード目はヘッダーとして利用します。

uri
/
/contact
/privacy-policy
Enter fullscreen mode Exit fullscreen mode

参考

Top comments (0)