python urllib requests对比_requests库和urllib包对比

python中有多种库可以用来处理http请求,比如python的原生库:urllib包、requests类库。urllib和urllib2是相互独立的模块,python3.0以上把urllib和urllib2合并成一个库了,requests库使用了urllib3。requests库的口号是“HTTP For Humans”,为人类使用HTTP而生,用起来不知道要比python原生库好用多少呢,比起urllib包的繁琐,requests库特别简洁和容易理解。话不多说,代码为证~~~

下面我们来分别使用urllib包和requests库写一个get请求,进行一下对比,如下图:

#-*- coding:utf8 -*-

importurllib2importurllib

URL_GET= "https://api.douban.com/v2/event/list"

defuse_params_urllib2():#构建请求参数

params = urllib.urlencode({'loc':'108288','day_type':'weekend','type':'exhibition'})print 'Request Params:'

printparams#发送请求

response = urllib2.urlopen('?'.join([URL_GET,'%s'])%params)#处理响应

print '>>>>>>Response Headers:'

printresponse.info()print 'Status Code:'

printresponse.getcode()print'>>>>>>>Response Body:'

printresponse.read()if __name__ == '__main__':print 'Use params urllib2:'use_params_urllib2()

#-*- coding:utf8 -*-

importrequests

URL_GET= "https://api.douban.com/v2/event/list"

defuse_params_requests():#构建请求参数

params = {'loc':'108288','day_type':'weekend','type':'exhibition'}#发送请求

response = requests.get(URL_GET,params=params)#处理响应

print '>>>>>>Response Headers:'

printresponse.headersprint '>>>>>>Status Code:'

printresponse.status_codeprint'>>>>>>>Response Body:'

printresponse.textif __name__ == '__main__':print 'Use params requests:'use_params_requests()

第一种使用的是urllib包,第二种使用的是requests库,从以下几个方面进行对比:

1)构建参数:在构建请求参数时,第一种需要将请求参数使用urllib库的urlencode方法进行编码预处理,非常麻烦

2)请求方法:发送get请求时,第一种使用的urllib库的urlopen方法打开一个url地址,而第二种直接使用requests库的get方法,与http请求方式是对应的,更加直接、易懂

3)请求数据:第一种按照url格式去拼接一个url字符串,显然非常麻烦,第二种按顺序将get请求的url和参数写好就可以了

4)处理响应:第一种处理消息头部、响应状态码和响应正文时分别使用.info()、.getcode()、.read()方法,第二种使用.headers、.status_code、.text方法,方法名称与功能本身相对应,更方便理解、学习和使用

5)连接方式:看一下返回数据的头信息的“connection”,使用urllib库时,"connection":"close",说明每次请求结束关掉socket通道,而使用requests库使用了urllib3,多次请求重复使用一个socket,"connection":"keep-alive",说明多次请求使用一个连接,消耗更少的资源

6)编码方式:requests库的编码方式Accept-Encoding更全,在此不做举例

由此可见,requests库更容易理解和阅读,符合Python哲学“Readability counts”,可读性很重要~更利于开发人员学习和使用,那就让我们一起开启python-requests库的学习之旅吧~

PS:

1.requests库的官网是http://www.python-requests.org/en/master/,里面有操作文档

2.requests库的作者是一个来自欧洲的爱好摄影的小哥哥,名叫Kenneth Reitz,他的个人网站:https://www.kennethreitz.org/,里面有他的帅照哦哈哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在爬虫中的区别和使用建议是什么? 回答: Python中有两个常用于爬虫的,分别是urllibrequests。在Python 2中,urlliburllib2同时存在,分别负责不同的功能,有些功能需要从urllib中导入。而在Python 3中,urllib已经整合了urllib2的功能,只保留了urllib一个标准,并且在功能和易用性上进行了改进。另外,还有一个值得注意的是,虽然urllib在人性化方面和requests存在差距,但urllibPython标准,自带安装,无需额外安装。而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两大爬虫——urllibrequests区别](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、付费专栏及课程。

余额充值