requests库
文章目录
1. 编码方式
-
response.
encoding
: 从HTTP header中猜测的相应内容编码方式【根据
header
中的
charset
提取编码方式, 不存在charset,
默认
为
ISO-8859-1
,所以
准确度低
于apparent_encoding】
-
response.
apparent_encoding
: 从内容中分析出的响应内容编码方式(备选编码方式)(apparent_encoding
准确度高
于encoding;apparent_encoding根据网页内容分析出的编码方式)
2. 异常
异常 | 说明 |
---|---|
requests.
|
网络连接错误异常,如DNS查询失败、拒绝链接等 |
requests.
|
HTTP错误异常 |
requests.
|
URL缺失异常 |
requests.
|
超过最大重定向次数,产生重定向异常 |
requests.
|
连接远程服务器超时异常 |
requests.
|
请求URL超时,产生超时异常【整个过程的超时】 |
异常 | 说明 |
---|---|
response.
|
如果不是200,产生异常requests.HTTPError |
3. 异常处理通用代码框架
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except :
return '产生异常'
4. Requests库的7个主要方法
4.1 HTML协议
4.1.1 HTML简介
HTML协议:
-
HTTP,
Hypertext Transfer Protocol
超文本传输协议
-
HTTP基于“请求与响应”模式的、无状态的应用层协议( 模式:用户请求,服务器响应;
无状态
:第1次请求与第2次无相关关联;
应用层协议
:该协议工作在HTTP协议之上)
4.1.2 URL简介
HTTP
协议采用
URL
作为定位网络资源的标识
URL是通过HTTP协议存取资源的
Internet
路径,一个
URL
对应一个数据资源
URL格式
http://host [:port][path]
格式 | 说明 |
---|---|
|
合法的Internet主机域名或IP地址 |
|
端口号,缺省端口为80 (这一部分可以省略) |
|
请求资源的路径 |
4.1.3 HTTP协议对资源的操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hRTM8F5I-1678776258704)(requests.assets/image-20230314112042474.png)]
方法 | 说明 |
---|---|
|
请求获取URL位置资源 |
|
请求获取URL位置资源的响应消息报告,即获得该资源的头部信息 |
|
请求向URL位置的资源后附加新的数据 |
|
请求URL位置存储一个资源,
原URL位置的资源 |
|
请求
URL位置的资源,即改变该处资源的部分内容 |
|
请求删除URL位置存储的资源 |
4.2 Requests7个主要方法
方法 | 说明 |
---|---|
requests.
|
构造一个请求,支撑以下各方法的基本方法 |
requests.
|
获取HTML网页的主要方案,对应于HTTP的GET |
requests.
|
获取HTML网页的头信息的方法,对应于HTTP的HEAD |
requests.
|
向HTML网页提交POST请求的方法,对应于HTTP的POST |
requests.
|
向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
requests.
|
向HTML网页提交局部修改请求,对应于HTTP的PATCH |
requests.
|
向HTML网页提交删除请求,对应于HTTP的DELETE |
4.2.1 方法参数
4.2.1.1 常见参数
requests.request( method, url , **kwargs)
**kwargs (keyword arguments 关键字参数)[可选性质] | 说明 |
---|---|
|
字典或字节序列,作为参数增加到url中 |
p = {'key1':'value1','key2':'value2'}
re = requests.request('GET','http://www.baidu.com',params=p)
print(re.url)
# http://www.baidu.com?key1=value1&key2=value2
**kwargs (keyword arguments 关键字参数)[可选性质] | 说明 |
---|---|
|
字典、字节序列或文件对象,作为Request的内容;作为请求数据传输 |
p = {'key1':'value1','key2':'value2'}
re = requests.request('POST','http://www.baidu.com',data=p)
body = '主题内容'
re = requests.request('POST','http://www.baidu.com',data=body)
**kwargs (keyword arguments 关键字参数)[可选性质] | 说明 |
---|---|
|
JSON格式的数据,作为Request的内容;作为请求数据传输 |
p = {'key1':'value1','key2':'value2'}
re = requests.request('POST','http://www.baidu.com',json=p)
**kwargs (keyword arguments 关键字参数)[可选性质] | 说明 |
---|---|
|
设定超时时间,秒为单位 |
re = requests.request('POST','http://www.baidu.com',timeout=30)
4.2.1.2 高级参数
**kwargs (keyword arguments 关键字参数)[可选性质] | 说明 |
---|---|
|
字典,HTTP定制头 |
hds = {'user-agent':'Chrome'}
re = requests.request('POST','http://www.baidu.com',headers=hds)
**kwargs (keyword arguments 关键字参数)[可选性质] | 说明 |
---|---|
|
Request中的cookie |
|
元组,支持HTTP认证功能 |
**kwargs (keyword arguments 关键字参数)[可选性质] | 说明 |
---|---|
|
字典类型,传输文件 |
fs = {'file':open('read.txt','rb')}
re = requests.request('POST','http://www.baidu.com',files=fs)
**kwargs (keyword arguments 关键字参数)[可选性质] | 说明 |
---|---|
|
字典类型,设定访问代理服务器,可以增加登录认证 |
# 增加用户名密码的设置;如此访问百度所用的就是代理服务器的IP地址;有效隐藏用户爬取源的IP地址信息
prs = {'http':'http://user:pass@10.10.10.1:1234','https':'https://10.10.10.1:4321'}
re = requests.request('GET','http://www.baidu.com',proxies=prs)
**kwargs (keyword arguments 关键字参数)[可选性质] | 说明 |
---|---|
allow_redirects
|
默认True,重定向开关 |
stream
|
默认True,获取内容立即下载开关 |
verify
|
默认True,认证SSL证书开关 |
cert |
本地SSL证书路径 |