0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

URLの有効性を確認する 200 300 400

Posted at

指定されたURLが有効か無効かを調べるコードです。ステータスコードが200番のものを有効、それ以外を無効と判断するコードです。

コード

check_URL.py
def check_URL(url):#URLの有効性をチェックする。戻り値はbool,ステータスコード(or Errorコード)
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36"}
    try:
        response = requests.head(url, timeout=10,headers=headers)
        if response.status_code == 200:
            return True , response.status_code
        elif response.status_code == 405:  # Method Not Allowed
            allowed_methods = response.headers.get('Allow', '')
            if 'GET' in allowed_methods:
                response = requests.get(url, timeout=10,headers=headers)
                if response.status_code == 200:
                    return True , response.status_code
                else:
                    return False , response.status_code
            else:
                return False , response.status_code
        else:
            return False , response.status_code
    except requests.exceptions.RequestException as e:
        return False , str(e)

ここに記載

解説

pythonのresponseライブラリを使い、指定されたURLが有効かどうかを調べています。
200なら有効。それ以外は無効と判断し、ステータスコードを返します。

ポイント1 200のみチェック

今回必要なのはステータスコードだけなので、リクエストをhead依頼します。
ステータスコードを見て個別処理します。

ポイント2 転送先は調査しない

もう一つのポイントは、転送先の調査をしないというところです。
実際、URLの有効/無効を調べているのでそれ以外はステータスコードで個別処理します。

ポイント3 URL自体が有効か判断する

単純ですが、これらはtry,except Exceptionでキャッチします。
リストが古いとそもそもURLでないことも考えられます。実際、5%程度にURLでない文字列などがふくまれていました。

#背景
Excelに保存されている古いデータの調査で、記載されたURLが有効かどうかを確認する必要がありました。
データ数は2万件ぐらいでしたが、10年前の古いデータでしたので404が4割、300が3割、残りが200番台という結果でした。

2000件程度あったリストのうち、404が4割、300台が3割、200が2割、残りが500台とエラーでした。
リストが引き継がれていたため、途中で書き換わってしまったエラーも多く残っていました。####と入力されており確認出来ないものもありました。
Yahoo!ジオシティーズも多かったですね。時代の移り変わりを感じます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?