什么是Requests?
Requests 是用python语言编写,基于urllib,采用Apache2 Licensed 开源协议的HTTP库。它比urllib 更加方便,可以节约我们大量的工作,完全满足HTTP 测试需求。
一句话——python实现的简单易用的HTTP 库
Requests的安装
pip install requests.
相关用法
1. import requests
response = requests.get(‘’https:// www.baidu.com/”) #返回网页的内容
print(type(response)) #类型 request.Models.Response
print(response.status_code) #返回一个状态码 200访问成功
Print(type(response.text)) #返回响应内容的字符串形式
Print(response.headers) #返回get请求获得页面的头部信息
Print(response.cookies)
Print(response.encoding )#从http header中猜测出来的响应内容的编码格式
Print(response.apparent_encoding) #从内容中分析响应内容的编码格式
#text乱码时候
r.encodong=’utf-8’ 即可
2. 各种请求方式
import requests
Payloade={
‘’key1”:1,
“key2”:2
}
requests.post(“网址”,date=paylode)
#默认存储到表单下
字符串存储到date内容下
requests.put(“网址”)
requests.delete(“网址”)
R=requests.head(“网址”) 返回网页的头部信息
R.headers
requests.patch(“网址”)
理解patch和put的区别
假设url位置有一组数据UserInfo ,包括UserID,UserName等20个字段
需求:用户修改了UserName,其他不变
1. 采用PATCH ,仅向url提交UserName的局部更新请求
2. 采用PUT, 必须将20个字段一起提交,未提交的字段被删除
Ps:
1. 可见PATCH的最主要好处是节省网络宽带
2. HTTP 协议和Request库方法是一致并且一一对应的
请求
基于GET请求
基本写法
import requests
response=requests.get(‘https://www.dbmeinv.com/’) #获取网页的内容
print(response.text) 以文本格式保存
带参数的GET请求
import requests
response=requests.get(‘https://www.dbmeinv.com/?pager_offset=1‘) #获取网页的内容
print(response.text) 以文本格式保存
import requests
data={
‘name’:‘lilei’
‘age’:18
}
response=requests.get(“http://httpbin.org/get”,params=data)
print(response.text)
解析json
import requests
response=requests.get(“http://httpbin.org/get”)
print(type(response.text))
print(response.json()) #等价于json.loads
print((response.json))
获取二进制数据(文件下载,音频)
import requests
response=requests.get(“http://github.com/favicon.ico”)
print(type(response.text),type(response.content))
print(response.text) #文本形式
print(response.content)#二进制内容
import requests
response=requests.get(“http://github.com/favicon.ico”)
with open(‘favicon’,wb) as f:
f.write(reponse.content)
f.close()
Requests库的get方法
r = requests.get(url)
函数内容:构造一个向服务器请求资源的Request 对象
返回的是一个包含服务器资源的Response对象(包含爬虫返回的全部内容)
爬取网页内容的通用代码框架
Requests支持6种链接库的异常
方法:response.raise_for_status() ps:如果不是200,返回一个requests.HTTPError的异常
import requests
def getHTMLText(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status()#如果状态码不是200,引发HTTPError的异常
r.encoding = r.apparent_encoding
return r.text
except:
return “产生了异常”
if __name__== “__main__”:
url = “http://baidu.com”
print(getHTMLText(url))
#requests.request()的13个控制访问参数
requests.request(method,url,**kwargs)
"""
method:请求方式,对应get/put/post等7种
url:拟获取页面的url链接
**kwargs:控制访问参数,共13个
**kwargs:控制访问的参数,均为可选项:
params:字典或字节序列,作为参数增加到url中
例:kv={‘key1‘:‘value‘,‘key2‘:‘value2‘}
r=requests.request(‘GET‘,‘http://python123.io/ws‘,params=kv)
print(r.url)
http://python.io/ws?key1=value1&key2=value2
data:字典,字节序列或文件对象,作为Request的内容
json:JSON格式的数据,作为Request的内容
headers:字典,HTTP定制头(模拟浏览器进行访问)
cokies:字典或CpplieJar,Request中的cookie
auth:元祖,支持HTTP认证功能
files:字典类型,传输文件
timeout:设定超时时间,秒为单位
proxies:字典类型,设定访问代理服务器,可以增加登陆认证
allow_redirects:True//False,默认为True,重定向开关
stream:True/False,默认为True,获取内容立即下载开关
verify:True/False,默认为True,认证SSL证书开关
cert:本地SSL证书路径"""
原文:https://www.cnblogs.com/pythonyeyu/p/10475048.html