requests 模块
比较方便的一个发送请求的模块
中文文档
请求
get请求
第一种方式,直接输入url
post 请求
|
|
其他请求方式
delete、put、head、options请求方式参考上面两个
请求头 headers
|
|
代理(proxies参数)
如果需要使用代理,你可以通过为任意请求方法提供 proxies
参数来配置单个请求:
也可以通过 本地环境变量 HTTP_PROXY
和 HTTPS_PROXY
来配置代理:
私密代理
|
|
响应
响应数据的编码
请求之后,获取到的数据,有些可能会出现乱码,这里我们着手解决一下
- requests,自带解压压缩( 如
gzip
)网页的功能 - 当收到一个响应时,Requests 会猜测响应的编码方式,用于在你调用
response.text
方法时对响应进行解码。Requests 首先在HTTP
头部检测是否存在指定的编码方式,如果不存在,则会使用chardet.detect
来尝试猜测编码方式(存在误差) - 更推荐使用
response.content.deocde()
通过 chardet 模块来获取响应的编码格式
|
|
响应码code和相应头headers
|
|
流模式获取响应数据
请求的时候设置 stream = True
理解一下 BytesIO
和 StringIO
很多时候,数据读写不一定是文件,也可以在内存中读写。
StringIO顾名思义就是在内存中读写str。
BytesIO 就是在内存中读写bytes类型的二进制数据
例子中如果使用StringIO 即f = StringIO(response.text)
会产生"cannot identify image file"
的错误
当然上述例子也可以把图片存到本地之后再使用Image打开来获取图片大小
cookie处理
如果一个响应中包含了cookie,那么我们可以利用 cookies参数拿到:
|
|
session 实现cookie自动管理
在 requests 里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。
会话能让我们在跨请求时候保持某些参数,比如在同一个 Session 实例发出的所有请求之间保持 cookie 。
实现人人网登录
|
|
其他
是否允许重定向
将 allow_redirects
设置为 True
表示允许重定向,可以通过 history
来查看之前重定向跳转信息
设置超时时间
超时时间通过 timeout
参数进行设置
https跳过证书验证
如果我们想跳过 12306 的证书验证,把 verify 设置为 False
就可以正常请求了。