做一个总结~以便以后参考
本文参考:添加链接描述
import requests
GET请求
eg:
r = requests.get('http://httpbin.org/get')
print(r.url)
传参
eg:
load = {'key1':'value1','key2':'value2','key3':'None'}
r = requests.get('http://httpbin.org/get',params = load)
print(r.url)
用列表传递参数
eg:
load = {'key1':'value1','key2':['value2','value3']}
r = requests.get('http://httpbin.org/get',params = load)
print(r.url)
r.raw返回原始socket respons,需要加参数stream=true
r = requests.get('https://api.github.com/events', stream = True)
print(r.raw)
print(r.raw.read(10))
传递headers
eg:
url = 'http://httpbin.org'
headers = {'user-agent':'my-app/0.0.1'}
r = requests.get(url,headers = headers)
print(r.url)
传递cookies
url = 'http://httpbin.org/cookies'
r = requests.get(url,cookies=dict(cookies_are='working'))
#r.text 返回headers中的编码解析的结果,可以通过r.encoding = 'gbk'来变更解码方式
print(r.text)
JSON响应内容
import requests
r = requests.get('https://github.com/timeline.json')
print(r.json())
POST请求
传递表单
r = requests.post('http://httpbin.org/post',data={'key':'value'})
load = {'key1':'value','key2':'value2'}
r = requests.post('http://httpbin.org/post',data=load)
print(r.text)
POST提交文件
先制作一个text文件,名为‘test.txt’,内容是‘this is a file’。Requests使得上传多部分编码文件变得很简单:
url = 'http://httpbin.org/post'
files = {'file': open('test.txt', 'rb')}
r = requests.post(url, files=files)
print(r.text)
POST提交表单
传递一个字典给 data 参数就可以了。数据字典在发出请求时会自动编码为表单形式:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)
响应状态码
使用r.status_code返回响应的状态码
r = requests.get("http://httpbin.org/get")
print(r.status_code)
为使用方便,Requests还附带了一个内置的状态码查询对象:
r = requests.get("http://httpbin.org/get")
print(r.status_code)
print(r.status_code == requests.codes.ok)
异常
如果发送了一个失败请求(非200响应),我们可以通过 Response.raise_for_status()来抛出异常:
bad_r = requests.get('http://httpbin.org/status/404')
print(bad_r.status_code)
bad_r.raise_for_status()
如果返回码是200,则不会抛出异常,即:
bad_r = requests.get('http://httpbin.org/get')
print(bad_r.status_code)
bad_r.raise_for_status()
读取头部信息
r = requests.get("http://httpbin.org/get")
print(r.headers)
print(r.headers['Content-Type'])
重定向与请求历史
默认情况下,除了 HEAD, Requests会自动处理所有重定向。
可以使用响应对象的 history 方法来追踪重定向。
r = requests.get('http://github.com')
print(r.url)
print(r.status_code)
print(r.history)
#如果你使用的是GET, OPTIONS, POST, PUT, PATCH 或者 DELETE,,那么你可以通过 allow_redirects 参数禁用重定向处理:
r = requests.get('http://github.com', allow_redirects=False)
print(r.status_code)
r.history
#如果使用的是HEAD,你也可以启用重定向:
r = requests.head('http://github.com', allow_redirects=True)
print(r.url)
print(r.history