【问题标题】:What is the equivalent code from urllib2 to urllib3 in pythonpython中从urllib2到urllib3的等效代码是什么
【发布时间】:2019-10-25 12:25:03
【问题描述】:

我是编码新手,正在学习在线课程。课程中的示例使用 urllib2。出于某种原因,我无法获得 urllib2,但我获得了 urllib3。他们写的代码是针对urllib2的,如下图:

webRequest = urllib2.Request(urlofFilename,headers=hdr)

当我写出来用 urllib3 做同样的事情时:

webRequest = urllib3.Request(urlofFilename,headers=hdr)

它给了我一个错误,指出 urllib3 模块没有属性“请求”。

除了 urllib3 之外,我如何编写相同的代码?

欢呼

【问题讨论】:

标签: python urllib2 urllib3


【解决方案1】:

要在 urllib3 中实例化一个 Request 对象,您应该使用PoolManager()。您将标题作为附加 request data:

http = urllib3.PoolManager()
webRequest = http.request('GET', urlofFilename, headers={'key': value})

【讨论】:

  • 我也试过这个。在我问原来的问题之前我试过了。你有 headers=.... 在我的代码中,键值对被定义为 hdr。所以在我的代码 headers=hdr.
  • 然而,当我运行它时......一大堆东西出现了。最后一件事是“位置解析错误”。
  • “位置解析错误”听起来像 urllib3 在获取您提供的网址时遇到问题。您是否尝试过其他网址?或者this issue 和你的相似?
  • 这可能与网址是纽约证券交易所的事实有关,他们在尝试自动下载的脚本上设置了一个阻止程序。然而,这就是为什么标题被定义为 hdr....hdr 是一个字典,通过定义用户代理来绕过块,即。假装它实际上是我要求而不是脚本
【解决方案2】:

Urllib2 和 Urllib3 有一些变化。您可以通过阅读文档来触摸它。 示例代码如下。

这是一个 Urllib3 文档Urllib3-Documentation

import urllib3

http = urllib3.PoolManager()
r = http.request('POST', 'https://urllib3.readthedocs.io/en/latest/user-guide.html')
print(r.status)
  • 建议:如果您开始新的东西,请通过原始文档。 :|)

【讨论】:

    猜你喜欢
    • 2014-08-31
    • 2017-06-17
    • 2019-05-16
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多