In Python, what are the differences between the urllib
, urllib2
, urllib3
and requests
modules?为什么是三个?他们似乎在做同样的事情……
原文由 Paul Biggar 发布,翻译遵循 CC BY-SA 4.0 许可协议
In Python, what are the differences between the urllib
, urllib2
, urllib3
and requests
modules?为什么是三个?他们似乎在做同样的事情……
原文由 Paul Biggar 发布,翻译遵循 CC BY-SA 4.0 许可协议
urllib2 提供了一些额外的功能,即 urlopen()
函数可以让您指定标头(过去通常您不得不使用 httplib,这要冗长得多。)但更重要的是,urllib2 提供了 Request
类,它允许使用更具声明性的方法来执行请求:
r = Request(url='http://www.mysite.com')
r.add_header('User-Agent', 'awesome fetcher')
r.add_data(urllib.urlencode({'foo': 'bar'})
response = urlopen(r)
请注意 urlencode()
仅在 urllib 中,而不是 urllib2 中。
在 urllib2 中还有用于实现更高级 URL 支持的处理程序。简短的回答是,除非您正在使用遗留代码,否则您可能希望使用 urllib2 中的 URL 打开器,但您仍然需要将某些实用程序函数导入到 urllib 中。
奖金答案 使用 Google App Engine,您可以使用 httplib、urllib 或 urllib2 中的任何一个,但它们都只是 Google 的 URL Fetch API 的包装器。也就是说,您仍然受到相同的限制,例如端口、协议和允许的响应长度。不过,您可以像预期的那样使用库的核心来检索 HTTP URL。
原文由 Crast 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答980 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
我知道已经有人说过了,但我强烈推荐
requests
Python 包。如果你使用过 python 以外的语言,你可能会认为
urllib
和urllib2
易于使用,代码不多,而且功能强大,这就是我以前的想法。但是requests
包是如此的有用和简短以至于每个人都应该使用它。首先,它支持完全宁静的 API,并且非常简单:
无论是 GET / POST,您都不必再次对参数进行编码,它只需要一个字典作为参数就可以了:
此外,它甚至还有一个内置的 JSON 解码器(同样,我知道
json.loads()
写的并不多,但这确实很方便):或者,如果您的响应数据只是文本,请使用:
这只是冰山一角。这是请求站点的功能列表: