私のDBに格納されているいくつかのURLが有効なリンクかどうかを確認しようとしています。これを達成するために、私はページの内容全体をダウンロードするのを避けるために、HEADステータスを要求するためにhttplib2を使用しています。私はその結果にとても満足していました。HEADとGET http要求が同じURLの異なるステータスコードを返す
しかし、HEADリクエストを使用したときに返されるステータスコードは、GETリクエストで返されたものと似ていない場合があります。
だから、ちょうどライブラリのバグの場合には、私が別のライブラリといくつかのテストを行った(以下の私の「リクエスト」libのテストです):
> import requests
> rg = requests.get("https://fr.news.yahoo.com/chemin-dames-l-hommage-personnel-pr%C3%A9sident-121005844.html")
> rh = requests.head("https://fr.news.yahoo.com/chemin-dames-l-hommage-personnel-pr%C3%A9sident-121005844.html")
> print("GET status code:", rg.status_code)
('GET status code:', 200)
> print("HEAD status code:", rh.status_code)
('HEAD status code:', 404)
しかし、何libに私が使用して、私はまだ持っています別のGET &同じURLのHEADステータス。
サイト管理者はHEAD要求とGET要求の両方で同一のステータスコードを返さないことにしました。これは推奨されていなくても正当だと思われます。
この問題を回避し、確認する必要のある2百万のURLのコンテンツ全体をダウンロードすることなく、リンクが有効かどうかを知る方法はありますか?
HEADリクエストで400を超えるステータスコードが返された場合は、GETリクエストで再確認できますが、それは私にとっては汚い仕事のようです。