Python中的Requests库

  • Post author:
  • Post category:python




requests库



1. 编码方式


  • response.

    encoding

    : 从HTTP header中猜测的相应内容编码方式【根据

    header

    中的

    charset

    提取编码方式, 不存在charset,

    默认



    ISO-8859-1

    ,所以

    准确度低

    于apparent_encoding】


  • response.

    apparent_encoding

    : 从内容中分析出的响应内容编码方式(备选编码方式)(apparent_encoding

    准确度高

    于encoding;apparent_encoding根据网页内容分析出的编码方式)



2. 异常

异常 说明

requests.

ConnectionError


网络连接错误异常,如DNS查询失败、拒绝链接等

requests.

HTTPError


HTTP错误异常

requests.

URLRequired


URL缺失异常

requests.

TooManyRedirects


超过最大重定向次数,产生重定向异常

requests.

ConnectTimeout


连接远程服务器超时异常

requests.

Timeout


请求URL超时,产生超时异常【整个过程的超时】
异常 说明

response.

raise_for_status()


如果不是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协议:


  1. HTTP,

    Hypertext Transfer Protocol

    超文本传输协议

  2. HTTP基于“请求与响应”模式的、无状态的应用层协议( 模式:用户请求,服务器响应;

    无状态

    :第1次请求与第2次无相关关联;

    应用层协议

    :该协议工作在HTTP协议之上)



4.1.2 URL简介



HTTP

协议采用

URL

作为定位网络资源的标识


URL是通过HTTP协议存取资源的

Internet

路径,一个

URL

对应一个数据资源


URL格式

http://host [:port][path]

格式 说明


host


合法的Internet主机域名或IP地址


port


端口号,缺省端口为80 (这一部分可以省略)


path


请求资源的路径



4.1.3 HTTP协议对资源的操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hRTM8F5I-1678776258704)(requests.assets/image-20230314112042474.png)]

方法 说明


GET


请求获取URL位置资源


HEAD


请求获取URL位置资源的响应消息报告,即获得该资源的头部信息


POST


请求向URL位置的资源后附加新的数据


PUT


请求URL位置存储一个资源,

覆盖

原URL位置的资源


PATCH


请求

局部更新

URL位置的资源,即改变该处资源的部分内容


DELETE


请求删除URL位置存储的资源



4.2 Requests7个主要方法

方法 说明

requests.

request()


构造一个请求,支撑以下各方法的基本方法

requests.

get()


获取HTML网页的主要方案,对应于HTTP的GET

requests.

head()


获取HTML网页的头信息的方法,对应于HTTP的HEAD

requests.

post()


向HTML网页提交POST请求的方法,对应于HTTP的POST

requests.

put()


向HTML网页提交PUT请求的方法,对应于HTTP的PUT

requests.

patch()


向HTML网页提交局部修改请求,对应于HTTP的PATCH

requests.

delete()


向HTML网页提交删除请求,对应于HTTP的DELETE



4.2.1 方法参数



4.2.1.1 常见参数


requests.request( method, url , **kwargs)

**kwargs (keyword arguments 关键字参数)[可选性质] 说明


params


字典或字节序列,作为参数增加到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 关键字参数)[可选性质] 说明


data


字典、字节序列或文件对象,作为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


JSON格式的数据,作为Request的内容;作为请求数据传输
p = {'key1':'value1','key2':'value2'}
re = requests.request('POST','http://www.baidu.com',json=p)
**kwargs (keyword arguments 关键字参数)[可选性质] 说明


timeout


设定超时时间,秒为单位
re = requests.request('POST','http://www.baidu.com',timeout=30)


4.2.1.2 高级参数
**kwargs (keyword arguments 关键字参数)[可选性质] 说明


headers


字典,HTTP定制头
hds = {'user-agent':'Chrome'}
re = requests.request('POST','http://www.baidu.com',headers=hds)
**kwargs (keyword arguments 关键字参数)[可选性质] 说明


cookies


Request中的cookie


auth


元组,支持HTTP认证功能
**kwargs (keyword arguments 关键字参数)[可选性质] 说明


files


字典类型,传输文件
fs = {'file':open('read.txt','rb')}
re = requests.request('POST','http://www.baidu.com',files=fs)
**kwargs (keyword arguments 关键字参数)[可选性质] 说明


proxies


字典类型,设定访问代理服务器,可以增加登录认证
# 增加用户名密码的设置;如此访问百度所用的就是代理服务器的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

<boolean>


默认True,重定向开关

stream

<boolean>


默认True,获取内容立即下载开关

verify

<boolean>


默认True,认证SSL证书开关

cert

本地SSL证书路径



版权声明:本文为weixin_43101443原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。