关于指向另一个网址的网址,我有一个相当奇怪的问题。因此,例如,我有一个网址:
http://mywebpage/this/is/a/forward
最终指向另一个网址:
http://mynewpage/this/is/new
我的问题是,当我在 python 中使用例如 urllib2 来获取第一页时,它最终会获取第二页。我想知道是否有可能知道原始链接指向什么。当我请求第一个链接时,是否有类似“标题”的东西告诉我第二个链接?
对不起,如果这是一个非常愚蠢的问题!
当您对第一个 URL 发出 GET 请求时,Web 服务器将返回一个 300 系列的回复代码,其Location
标头的值为第二个 URL。您可以geturl
使用urlopen
. 如果涉及多个重定向,则 urllib 似乎会告诉您最后一跳,并且无法获取其他重定向。
这不会通过 JavaScript 或 处理重定向meta http-equiv="refresh"
,但您可能不在这种情况下,或者您不会像以前那样问问题。
您可以使用请求来执行此操作:
>>> url = 'http://ofa.bo/foagK7'
>>> r = requests.head(url)
>>> r.headers['location']
'https://my.barackobama.com/page/s/what-does-2000-mean-to-you'
最常见的是通过RFC2616中定义的重定向响应代码 (3xx) 来完成,尽管使用原始页面中的一些 javascript 无法实现“伪重定向效果”。
这个SO question是关于如何防止 urllib2 跟随重定向,它看起来像你可以使用的东西。