购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 请求方式

由于requests模块为第三方模块,因此在使用requests模块时,需要通过执行pip install requests代码进行该模块的安装。如果使用了Anaconda,则不需要单独安装requests模块。requests的功能特性如下:

☑ Keep-Alive&连接池

☑ Unicode响应体

☑ 国际化域名和URL

☑ HTTP(S)代理支持

☑ 带持久Cookie的会话

☑ 文件分块上传

☑ 浏览器式的SSL认证

☑ 流下载

☑ 自动内容解码

☑ 连接超时

☑ 基本/摘要式的身份认证

☑ 分块请求

☑ 优雅的key/value Cookie

☑ 支持.netrc

☑ 自动解压

3.1.1 GET请求

实例3.1 实现不带参数的GET网络请求

(实例位置:资源包\Code\03\01)

最常用的HTTP请求方式分别为GET和POST,可以通过两种方式来使用requests模块实现GET请求,一种是带参数的,另一种是不带参数的。下面以某度为例实现不带参数的网络请求,代码如下:

程序运行结果如图3.1所示。

图3.1 实现不带参数的网络请求

3.1.2 对响应结果进行utf-8编码

实例3.2 获取请求地址所对应的网页源码

(实例位置:资源包\Code\03\02)

当响应状态码为200时,说明本次网络请求已经成功,此时可以获取请求地址所对应的网页源码,代码如下:

程序运行结果如图3.2所示。

图3.2 获取请求地址所对应的网页源码

注意

在没有对响应内容进行utf-8编码时,网页源码中的中文信息可能会出现如图3.3所示的乱码。

图3.3 中文乱码

3.1.3 爬取二进制数据

实例3.3 下载某网站首页中的logo图片

(实例位置:资源包\Code\03\03)

使用requests模块中的get函数不仅可以获取网页中的源码信息,还可以获取二进制文件。但是在获取二进制文件时,首先需要使用response.content属性获取bytes类型的数据,然后将数据保存在本地文件中。例如,下载某网站首页中的logo图片即可使用如下代码:

程序运行后打印的二进制数据如图3.4所示。程序运行后,当前目录下将自动生成如图3.5所示的“电子logo”图片。

图3.4 打印的二进制数据

图3.5“电子logo”图片

3.1.4 GET(带参)请求

1.实现请求地址带参

如果需要为GET请求指定参数,可以直接将参数添加在请求地址URL的后面,然后用“?”进行分隔,如果一个URL地址中有多个参数,则参数之间用“&”进行连接。GET(带参)请求的代码如下:

程序运行结果如图3.6所示。

图3.6 响应结果

说明

这里通过http://httpbin.org/get网站进行演示,该网站可以作为练习网络请求的一个站点使用,模拟各种请求操作。

2.配置params参数

requests模块提供了传递参数的方法,允许使用params关键字参数,以一个字符串字典来提供这些参数。例如,想传递key1=value1和key2=value2到httpbin.org/get,那么可以使用如下代码:

程序运行结果如图3.7所示。

图3.7 响应结果

3.1.5 POST请求

实例3.4 实现POST请求

(实例位置:资源包\Code\03\04)

POST请求方式也被叫作提交表单,表单中的数据内容就是对应的请求参数。使用requests模块实现POST请求时,需要设置请求参数data。POST请求的代码如下:

程序运行结果如图3.8所示。

图3.8 响应结果

说明

POST请求中data参数的数据格式可以是列表、元组或者JSON。参数代码如下:

注意

requests模块中GET请求与POST请求的参数分别是params和data,所以不要将两种参数填写错误。 HGG8t8NUl+ExwlP3RLBnyB0wSlBcwtS+EcmFclEU5dE2zHGXOgRYvNC883Lmnd07

点击中间区域
呼出菜单
上一章
目录
下一章
×