python requests模块使用方法_让 HTTP 服务人类——Python Requests 模块基本用法总结...

edced0be-4279-41bc-ae61-1d47fb5807f7

Requests是一个基于Apache2 Licensed 协议开源的Python HTTP库,使得Python轻松的向网站请求信息以及检查返回的响应。

Requests 继承了urllib2的所有特性,支持HTTP连接保持和连接池,支持使用Cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。

本文主要介绍Python Requests的一些简单基本用法,高级特性将在后续文章中介绍。

若对您所有帮助,欢迎通过文章顶部“生机大会”活动页面,投票支持哦。

安装 Requests

我们在Windows 10,Python3环境中,通过pip安装requests模块,如下 :

ceed4b432a424618ae5b7121b93996c2

发送请求

我们先看一下简单的例子

cd307ce8be2840fbae1fc6556dd5adbe

如上,发送一个完整的HTTP请求,只需要几行代码即可,简洁而优雅。发送其它方式的请求也是如此简洁,如下:

99556099f93e465198d2094c116362db

向URL中传递参数

有时候我们需要在 url中传递参数,就像浏览头条个人主页一样,url中就包含了mid=1615263538560013参数。我们可以自己拼接该URL,也可以使用 Requests提供的

params

参数实现参数的传递,如下:

5af1a3d856f44bd38a4288b71eae1d6f

如上,我们可以看到打印的请求url是一个拼接后的包含{'user_name': 'Jack', 'mobile': 'Tony'} 参数的url。

在GET请求中,我们使用

params

参数传递数据,在POST请求中我们使用

data

json

参数传递数据。

获取响应内容

获取响应状态码

我们可以

response.status_code

获取每次请求的响应状态,如下:

3839e0897b124fcab99f51846532ebf8

如果 HTTP 请求返回了不成功的状态码,

Response.raise_for_status

方法会抛出一个 HTTPError异常,因此我们可以使用它直接来判断请求是否成功。

2a95cf7d3bbe4fcbbb7b175fbd89a25b

获取字符串方式的响应体

response.text

会自动根据响应头部的字符编码进行解码,如下:

1f4c653913c5458495444d761bd08462

获取字节方式的响应体

response.content

会自动为你解码 gzip 和 deflate 压缩,如下:

dcc0e35d2a354f029c56f7cd639aa583

Requests 中也有一个内置的 Json 解码器,帮助我们处理 Json 响应内容,如下:

7905d54bd45f4924910251fc1a1d5063

获取响应头

我们可以通过

response.headers

方法以字典对象存储服务器响应头,如下:

c0d9f3f5c9fc4d8bbd6d97fdd3646478

获取网页编码

我们可以通过

response.encoding

获取网页编码

929784d455bd4a7caaaebc861ebff5cd

对 encoding修改后就直接会用修改后的编码去获取网页内容。

设置请求超时时间

我们可以通过

timeout

参数设置超时时间,一旦超过这个时间还没获得响应内容,就会抛出requests.exceptions.ConnectTimeout异常。

7efef04c477146299719762cc7e2622c

POST请求方式

上面例子中,我们通过 GET请求方式介绍了 Requests基本的用法,在实际应用中除了GET请求方式,还有 POST请求方式也被广泛的应用。POST请求方式的使用与 GET方式并没有很大的区别,本质的区别在于它传递参数的方式并不像 GET方式一样,通过在url中拼接字段来发送请求,POST请求方式采取了相对更为安全的操作方式,通过form表单的方式来发送请求。

HTTP协议中规定 POST提交的数据必须放在消息主体中,但是协议并没有规定必须使用什么编码方式。服务端通过是根据请求头中的 Content-Type字段来判断请求中的消息主体是用何种方式进行编码,然后消息主体进行解析。具体的编码方式包括,包含以下几种:

以表单形式提交数据(

application/x-www-form-urlencoded

想要发送表单形式的数据,只需简单的传递一个字典给data参数,在发送请求的时候,会自动编码为表单的形式,例如:

82b42ba9194149f881810168e229f7ce

以Json形式提交数据(

application/json

在很多情况下,想要发送的数据并非为表单形式,而是一个json格式的字符串,如果传递给

data

参数的内容不是一个Dict,而是一个String,那么在发送的时候,数据会被直接发送出去,不会自动编码为表单形式。

因此,想要在 POST请求中使用

data

参数来传递 json格式的字符串,首先得把dict转为string,通常我们使用

json.dumps

方法,例如:

6d9053487e304fc799d685f7b54bab03

除了可以对 Dict编码后以String的方式传递参数外,还可以使用

json

参数直接传递,在传递时会自行进行编码为string类型,如下:

ab1548a26c0b43629a0464fdfb5be2e9

以multipart形式提交数据(

multipart/form-data

)

Requests也支持以multipart形式发送 POST请求,只需将一文件传给 requests.post 的

files

参数就可以实现文件提交,如下:

5cf3b27e4707403e9c4e9fddd1525592

我们也可以把字符串直接作为文件进行提交,如下:

5812958818d54a2f9b86c53c2907194c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值