requests库
Posted kmnskd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了requests库相关的知识,希望对你有一定的参考价值。
-
pip3 install requests
-
res = requests.get(url,params) 获取响应网页对象,params以字典形式向url传参,value值为None不会传入。
import requests params = {‘name‘:‘km‘,‘age‘:22} headers = {‘Server‘:‘likun‘} res = requests.get(‘http://httpbin.org/get‘,params=params,stream=True,headers=headers)
-
res.text 打印响应内容
-
res.encoding 当前响应使用的编码,可以重新赋值改变使用自己合适的编码
-
res.content 二进制响应内容
-
res.json() json响应内容
-
res.raw 获取原始响应数据,需在get请求中加参数stream=True
-
res.headers 获取请求头
-
res = requests.get(url,params,headers=headers) 自己添加请求头
-
-
res.cookies 获取cookies
-
如果想发送cookies到服务器,可以使用cookies参数
cookies = {‘cookies_are‘:‘working‘} res = requests.get(‘http://httpbin.org/cookies‘,cookies=cookies) print(res.text) ? {"cookies": {"cookies_are": "working"}}
-
-
res.status_code 状态码
-
res.status_code == requests.codes_ok 内置的状态码查询,200返回True
-
res.raise_for_status() 如果发送错误的4xx或5xx请求,可以用这个函数抛出异常
-
res = requests.get(‘http://httpbin.org/status/404‘) print(res) res.raise_for_status()
-
-
requests.post(url,params) post传数据
-
发送以表单形式的数据,data参数以字典形式上传
data = {‘key1‘:‘value1‘,‘key2‘:‘value2‘,‘key2‘:‘value3‘}#同一key值自动处理在一起 res = requests.post(‘http://httpbin.org/post‘,data=data) { ... "form": { "key1": [ "value1", "value2" ] }, ... }
-
流式上传,发送大文件时无需先把它们读入内存。
with open(‘massive-body‘,‘rb‘) as f: requests.post(‘http://some.url/streamed‘,data=f)
-
res.request.post(‘http://httpbin.org/post‘,files=files) files二进制上传
files = {‘file‘:open(‘1.jpg‘,‘rb‘)} res = requests.post(‘http://httpbin.org/post‘,files=files)
-
-
证书验证:Requests 可以为 HTTPS 请求验证 SSL 证书,就像 web 浏览器一样。SSL 验证默认是开启的,如果证书验证失败,Requests 会抛出 SSLError: requests.exceptions.SSLError 报错。
-
也可以为verify传入CA_BUNDLE 文件路径,或者包含可信任 CA 证书文件的文件夹路径:
-
改为False除去证书验证
import requests from requests.packages import urllib3 urllib3.disable_warnings() #调用这个包消除警告信息 res = request.get(‘http://www.12306.cn‘,verify=False) print(res.status_code) ? 200
-
cert参数指定本地证书作为客户端证书,可以是单个文件(包含密钥和证书)或一个包含两个文件路径的元组:
requests.get(‘https://kennethreitz.org‘, cert=(‘/path/client.cert‘, ‘/path/client.key‘)) <Response [200]>
-
-
设置代理:proxies 参数设置代理ip
proxies = { ‘http‘:‘http://127.0.0.1:9743‘, ‘https‘:‘https://127.0.0.1:9743‘ } res = requests.get(‘http://www.taobao.com‘,proxies=proxies)
-
有用户名的代理
proxies = {‘http‘:‘http://user:[email protected]:9743/‘}
-
-
超时设置:timeout 参数
res = res = requests.get(‘http://www.taobao.com‘,timeout=1)
-
异常处理:requests.exceptions基类
-
会话对象,会话维持:会话对象可以让你保持连接状态,跨站请求保持某些参数。它是一个Session实例,这个实例会在所有的请求之间保持cookie。所以如果你向同一主机发送多个请求,底层的TCP会被重用,从而带来显著地性能提升。
-
同一会话中的连接状态都是持久的,urllib3自动处理
#跨站保持cookies import requests s = requests.Session() s.get(‘http://httpbin.org/cookies/set/sessioncookie/123456789‘) res = s.get("http://httpbin.org/cookies") print(res.text) ‘{"cookies": {"sessioncookie": "123456789"}}‘
-
- 会话对象也可以为请求方法传参
s.headers.update({‘x-test‘: ‘true‘})#添加新的值 res = s.get(‘http://httpbin.org/headers‘, headers={‘x-test2‘: ‘true‘}) { "headers": { "Accept-Encoding": "identity", "Connection": "close", "Cookie": "sessioncookie=123456789", "Host": "httpbin.org", "X-Test": "true", "X-Test2": "true" } }
持续更...
以上是关于requests库的主要内容,如果未能解决你的问题,请参考以下文章
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段