【问题标题】:How to get all redirected urls with urllib2如何使用 urllib2 获取所有重定向的 url
【发布时间】: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-requests.org/en/latest/user/advanced/#keep-alive,了解如何管理连接。

标签: python urllib2 urllib http-redirect


【解决方案1】:

您可以构建自己的开瓶器和子类urllib2.HTTPRedirectHandler。你可以参考 Dive Into Python 的 Handling Redirects 章节。很有帮助。

【讨论】:

  • 谢谢,我会看看这个!
  • 您也可以参考urllib2 tutorial 以更好地了解urllib2。
猜你喜欢
  • 2019-03-11
  • 2011-04-03
  • 1970-01-01
  • 2012-12-18
  • 2011-01-23
  • 2012-07-26
  • 2011-06-21
  • 1970-01-01
相关资源
最近更新 更多