如何获得最终重定向的网址

时间:2010-07-22 14:05:33

标签: python google-app-engine feedparser

我正在使用谷歌应用程序引擎获取提要url bur几个网址是301重定向我想得到最终的网址,它返回给我的结果

我使用通用提要阅读器来解析网址是否有任何方法或任何可以给我最终网址的功能。

3 个答案:

答案 0 :(得分:3)

通过解析无法获取“最终”URL,为了解决这个问题,您至少需要执行HTTP HEAD操作

答案 1 :(得分:3)

如果您使用的是urlfetch API,则可以访问final_url urlfetch.fetch()的{​​{1}}属性,假设您设置了follow_redirectsTrue

>>> from google.appengine.api import urlfetch
>>> url_that_redirects = 'http://www.example.com/redirect/'
>>> resp = urlfetch.fetch(url=url_that_redirects, follow_redirects=False)
>>> resp.status_code
302 # or 301 or whatever
>>> resp = urlfetch.fetch(url=url_that_redirects, follow_redirects=True)
>>> resp.status_code
200
>>> resp.final_url
'http://www.example.com/final_url/'

请注意,follow_redirects关键字参数默认为True,因此您无需明确设置。

答案 2 :(得分:0)

您可以通过手动处理重定向来执行此操作。在调用fetch时,传入follow_redirects=False。如果响应对象的HTTP状态是重定向代码(301或302),请抓取Location响应标头并再次获取,直到HTTP状态为其他内容。添加健全性检查(最多可能有5次重定向)以避免重定向循环。