什么是 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/") http://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 证书路径 """
来源: http://www.bubuko.com/infodetail-2976328.html