指定したURLのHTTPステータスを一括でチェックするPythonスクリプト
こんにちは。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