DDG - Develop a Digital Garden

develop a digital garden

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

Image from Gyazo

こんにちは。shootaceanです。

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

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

pandasのインストール

$ pip3 install pandas

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)

CSVレイアウト例

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

uri
/
/contact
/privacy-policy

参考