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 -*-
import urllib2
import urllib

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

def use_params_urllib2():
    #构建请求参数
    params = urllib.urlencode({‘loc‘:‘108288‘,‘day_type‘:‘weekend‘,‘type‘:‘exhibition‘})
    print ‘Request Params:‘
    print params
    #发送请求
    response = urllib2.urlopen(‘?‘.join([URL_GET,‘%s‘])%params)
    #处理响应
    print ‘>>>>>>Response Headers:‘
    print response.info()
    print ‘Status Code:‘
    print response.getcode()
    print‘>>>>>>>Response Body:‘
    print response.read()

if __name__ == ‘__main__‘:
    print ‘Use params urllib2:‘
    use_params_urllib2()
#-*- coding:utf8 -*-
import requests

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

def use_params_requests():
    #构建请求参数
    params = {‘loc‘:‘108288‘,‘day_type‘:‘weekend‘,‘type‘:‘exhibition‘}
    #发送请求
    response = requests.get(URL_GET,params=params)
    #处理响应
    print ‘>>>>>>Response Headers:‘
    print response.headers
    print ‘>>>>>>Status Code:‘
    print response.status_code
    print‘>>>>>>>Response Body:‘
    print response.text

if __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/,里面有他的帅照哦哈哈哈

原文地址:https://www.cnblogs.com/insane-Mr-Li/p/9876774.html

时间: 2024-10-10 02:19:09

requests库和urllib包对比的相关文章

网络爬虫入门:你的第一个爬虫项目(requests库)

0.采用requests库 虽然urllib库应用也很广泛,而且作为Python自带的库无需安装,但是大部分的现在python爬虫都应用requests库来处理复杂的http请求.requests库语法上简洁明了,使用上简单易懂,而且正逐步成为大多数网络爬取的标准. 1. requests库的安装采用pip安装方式,在cmd界面输入: pip install requests 小编推荐一个学python的学习qun 491308659 验证码:南烛无论你是大牛还是小白,是想转行还是想入行都可以来

从0开始学爬虫10之urllib和requests库与github/api的交互

urllib库的使用 # coding=utf-8 import urllib2 import urllib # htpbin模拟的环境 URL_IP="http://10.11.0.215:8080" URL_GET = "http://10.11.0.215:8080/get" def use_simple_urllib2(): response = urllib2.urlopen(URL_IP) print '>>>> Response

python WEB接口自动化测试之requests库详解

1.Get请求 前提: requests库是python的第三方库,需要提前安装哦,可以直接用pip命令:`python –m pip install requests` 按照惯例,先将requests库的属性打印出来,看看哪些属性. >>> import requests >>> dir(requests) #查看requests库的属性 ['ConnectionError', 'HTTPError', 'NullHandler', 'PreparedRequest'

请求库之requests库

目录 介绍 基于GET请求 1.基本请求 2.带参数的GET请求->params 带参数的GET请求->headers 带参数的GET请求->cookie 基于POST请求 1.介绍 2.发送post请求,模拟浏览器的登录行为 requests.session()自动帮我们保存cookie信息 补充 响应response respone属性 获取二进制数据 爬取大文件 解析json数据 SSL Cert Verification 使用代理 超时设置 异常处理 上传文件 介绍 #介绍:使用

Python爬虫:HTTP协议、Requests库

HTTP协议: HTTP(Hypertext Transfer Protocol):即超文本传输协议.URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源. HTTP协议对资源的操作: Requests库提供了HTTP所有的基本请求方式.官方介绍:http://www.python-requests.org/en/master Requests库的6个主要方法: Requests库的异常: Requests库的两个重要对象:Request(请求).Response(

python爬虫从入门到放弃(四)之 Requests库的基本使用

什么是Requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库如果你看过上篇文章关于urllib库的使用,你会发现,其实urllib还是非常不方便的,而Requests它会比urllib更加方便,可以节约我们大量的工作.(用了requests之后,你基本都不愿意用urllib了)一句话,requests是python实现的最简单易用的HTTP库,建议爬虫使用requests库. 默认安装好python之后,是没有安

Python3网络爬虫——三、Requests库的基本使用

一.什么是Requests Requests是用Python语言编写,基于urllib,采用Apache2 Licensed开元协议的HTTP库.它比urllib更加的方便,可以节约我们大量的工作完全满足HTTP测试需求.简单来讲,即Python实现的简单易用的HTTP库. 二.Requests库的安装 如果是初学者,建议使用原生Python3进行安装. 1 >> pip3 install requests 如果有一定的Python基础(会基本语法即可),使用anaconda进行安装更加方便,

一个咸鱼的Python爬虫之路(一):requests库

作为一个咸鱼大学打了3年游戏才幡然醒悟,现在开始学点东西,这里记录下自己的所学. urllib库之前有些了解就不写了,从requests 库开始吧(ˉ▽ ̄-) . 首先要说的是一定要用好官方文档:http://docs.python-requests.org/en/master/ 先来看个列子吧: 下面介绍requests库的几种基本用法: 具体代码略过参考官方文档练习就好,这里面get是最常用的方法. response对象包含了服务器返回的所有信息,也包含了requests的请求信息. 属性

python网络爬虫之requests库

Requests库是用Python编写的HTTP客户端.Requests库比urlopen更加方便.可以节约大量的中间处理过程,从而直接抓取网页数据.来看下具体的例子: def request_function_try():     headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0'}     r=requests.get(url="http://www