最初の正しいオプションは正しい回答ですが、メタタグを使用してサイトがリダイレクトされると、リダイレクトされた正規のリンクも指定されることがあります。この例では、リダイレクトするURLであるwikipediaからhttp://en.wikipedia.org/wiki/Google_Inc_Class_Aをリクエストしようとしています。
>> request = requests.get('http://en.wikipedia.org/wiki/Google_Inc_Class_A')
私がチェックして:
>> request.history
[]
代替がしようとするとうまくいけば、あなたがにリダイレクトされているものを持っていなければならない正規のURLを引っ張っています。 (ここではBeautifulSoupも使用しています)
>> soup = BeautifulSoup(request._content)
>> canonical = soup.find('link', {'rel': 'canonical'})
>> canonical['href']
'http://en.wikipedia.org/wiki/Google'
この特定のケースでリダイレクトされるURLに一致します。だから、明らかにするには、これは醜い第二の選択肢ですが、他のすべてが失敗した場合は試してみる価値があります。
解決しようとしている問題は何ですか?あなたのコードはどうやって正しいことをしていませんか?エラーモードについて知りたいだけなら、この動作を自分でテストしてください。 – Marcin
を確認してください。http://stackoverflow.com/questions/554446/how-do-i-prevent-pythons-urllib2-from-following-a-redirect – OneOfOne
@Marcin私には、巨大なリスト(1k +)のアップされているかどうか。私は無作為に40〜50を手動でテストするように選択しました。ページが見つからないとエラーページにリダイレクトされることがあります。また、URLパターンが変更されたため、多くのURLがリダイレクトされていることがわかりました。 – iCodeLikeImDrunk