【发布时间】:2013-08-06 18:02:26
【问题描述】:
我使用 urllib2 来获取链接的最终 url,无论是否有重定向。我的简单代码如下所示:
fileobj = urllib.request.urlopen(adress, timeout=30)
url = fileobj.geturl()
但是当有多个重定向时,我想获取不同重定向的所有 url。我如何使用 urllib2 实现这一点,我正在阅读文档但无法找到任何有用的东西。也许有人可以给我一个提示并指出我正确的方向?
也可以使用另一个库,但不能使用请求,因为我的 tcp 连接池有问题。
非常感谢!
【问题讨论】:
-
requests有什么问题?该库明确包含完整的重定向历史记录。 -
如前所述,requests.get 保持打开 tcp 连接的时间过长,并且不将其归还给池。现在我只是使用我没有这个问题的 head 方法,但也没有重定向历史记录,也没有机会获得最终的 url。这就是为什么我使用请求和 urllib2 的组合。
-
但无论如何,Martijn 我也对请求案例感兴趣,也许是为了未来的项目。我知道我可以访问 r.history 并查看发生的不同重定向。但是如何获取每个重定向的 url?我没有在请求基本和高级指南上找到任何东西。非常感谢!
-
我怀疑您可能误解了 Keep Alive 连接,其中连接保持打开状态以重复使用对同一服务器的以下请求。有关重定向历史记录,请查看已保存响应上的
Location标头。
标签: python urllib2 urllib http-redirect