0

別のURLを指すURLに関してかなり奇妙な質問があります。したがって、たとえば、次のURLがあります。

http://mywebpage/this/is/a/forward

これは最終的に別のURLを指します:

http://mynewpage/this/is/new

私の質問は、たとえばPythonでurllib2を使用して最初のページをフェッチすると、最終的に2番目のページがフェッチされるということです。元のリンクが何を指しているのかを知ることが可能かどうか知りたいのですが。最初のリンクをリクエストしたときに2番目のリンクを教えてくれる「ヘッダー」のようなものはありますか?

これが本当にばかげた質問ならごめんなさい!

4

3 に答える 3

3

最初のURLに対してGETリクエストを発行すると、Webサーバーは300シリーズの応答コードを返しLocationます。ヘッダーの値は2番目のURLです。geturlによって返されるオブジェクトurlopenのメソッドを使用して、Pythonからの2番目のURLが何であるかを確認できます。複数のリダイレクトが含まれている場合、urllibがラストホップを通知し、他のリダイレクトを取得する方法がないように見えます。

これはJavaScriptまたはを介したリダイレクトを処理しませmeta http-equiv="refresh"んが、おそらくそのような状況ではないか、またはあなたがしたように質問をしなかったでしょう。

于 2012-12-06T00:49:05.780 に答える
0

これは、 RFC2616で定義されているリダイレクト応答コード(3xx)を介して最も一般的に行われますが、元のページの一部のJavaScriptでは「疑似リダイレクト効果」を実現できません。

このSOの質問は、urllib2がリダイレクトをたどらないようにする方法に関するもので、使用できる可能性があるもののようです。

于 2012-12-06T00:47:40.440 に答える
0

これは、リクエストを使用して行うことができます。

>>> url = 'http://ofa.bo/foagK7'
>>> r = requests.head(url)
>>> r.headers['location']
'https://my.barackobama.com/page/s/what-does-2000-mean-to-you'
于 2012-12-06T01:05:14.780 に答える