Python urllib, urllib2, urllib3 以及 requests 的区别 (附个人一些看法)

urllib

python 标准 http 库, 无论是 python 2 还是 python 3 都有.

urllib2

urllib2 是 只存在于 python 2 的一个 http 标准库.

在 python 2 时代, 由于 urllib 的功能过于基础和简陋, 于是官方做了大量重新设计, 推出了 urllib2.

值得注意的是, urllib2 并不能完全独立使用, 一些比较基础的功能仍然需要从 urllib 中导入, 于是你在 python 2 写成的代码中可能会看到 “urllib” 和 “urllib2” 同时存在的 “奇景”:

# python 2 代码演示
from urllib import urlencode
from urllib2 import Request, urlopen

req = Request(url='http://www.example.com')
req.add_header('User-Agent', 'example fetcher')
req.add_data(urlencode({'foo', 'bar'}))
resp = urlopen(req)
...

(个人感觉在 python 2 时代用 python 标准库做网络通讯并不友好.)

值得庆幸的是, python 3 已经移除了 urllib2, 只留下 urllib 标准库, 且 urllib 在功能和易用性做了很大完善, 包含了许多常用的功能 (尽管在人性化方面和 requests 存在差距).

urllib3

一个第三方库, 非 python 自带. 可以通过 pip install urllib3 安装.

urllib3 这个库和 urllib, urllib2 应该没什么关系, 顶多可以认为该库的作者为了减轻人们的认知负担沿用了 2 时代的版本命名顺序. (不过对于不懂得这段历史的初学者来说已经够混乱了.)

urllib3 支持 python 2.7+ 和 python 3.6+. 它被很多著名的库所使用, 比如 requetspip 都有依赖到它.

ps: 本人最早接触爬虫是从 requests 开始, 对 urllib3 没有太多了解; 加上 urllib3 的 1.26+ 版本在 windows 上导致了灾难性的 pip 代理异常 (参考 这篇文章), 本人对它的印象比较差.

requests

非常流行的 http 库. 它有着堪称典范的代码风格, 极具易用性 (人性化) 的接口设计等诸多优点, 是开发者最爱的 python 第三方库之一.

ps: 印象中 requests 的依赖项比较多 (不过最新的版本似乎很少了), 对于非常在意打包体积的人来说仍然需要多加关注.

总结

如果是一些基础的, 偶尔使用到 (在自己的项目的少数模块中), 其实推荐用 python 自带的 urllib; requests 适合专注于爬虫等网络通讯项目的人员.

参考

https://stackoverflow.com/a/63233379

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
库在爬虫中的区别和使用建议是什么? 回答: Python中有两个常用于爬虫的库,分别是urllib库和requests库。在Python 2中,urllib库和urllib2库同时存在,分别负责不同的功能,有些功能需要从urllib中导入。而在Python 3中,urllib库已经整合了urllib2的功能,只保留了urllib一个标准库,并且在功能和易用性上进行了改进。另外,还有一个值得注意的是,虽然urllib在人性化方面和requests存在差距,但urllib库是Python标准库,自带安装,无需额外安装。而requests库需要单独安装,但它更为便捷,可以直接构造get、post请求并发起,相比之下urllib.request只能先构造请求,再发起。因此,对于爬虫任务,建议使用requests库,它更易用且功能更丰富。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python urllib, urllib2, urllib3 以及 requests区别 (个人一些看法)](https://blog.csdn.net/Likianta/article/details/126705631)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [浅谈Python两大爬虫库——urllib库和requests区别](https://blog.csdn.net/pdcfighting/article/details/117049893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值