확정된 URL의 HTTP스테이타스를 확인하기 위한 Python 스크립팅

6565 단어 pythonjapanese


こんにちは.shootacean입니다.

CSV 파일에 정의된 URL을 원본에 GETrichest를 실행하고, 레스폰스의 HTTP스테이타스를 체크할 수 있는 Python 스크립팅입니다.

運営しているWEB서비스の検証をする際に利用しました.

pandas의 인스톨




$ pip3 install pandas


파이썬스크립트


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


参考


  • urllib.request --- URL を開くための拡張可能なライブラリ — Python 3.9.4 ドキュメント
  • windows - To print http status code in Python 3 (urllib) - Stack Overflow
  • Python の HTTP クライアントは urllib.request で十分 - Qiita
  • PythonモジュールRequestsのHTTPステータスコードについて | DevelopersIO
  • pandas.DataFrameのforループ処理(イテレーション) | note.nkmk.me
  • 좋은 웹페이지 즐겨찾기