天天看點

python-requests的簡單用法

做一個總結~以便以後參考

本文參考:​​​添加連結描述​​

import requests

GET請求

eg:

r = requests.get('http://httpbin.org/get')
print(r.url)      
python-requests的簡單用法
傳參

eg:

load = {'key1':'value1','key2':'value2','key3':'None'}
r = requests.get('http://httpbin.org/get',params = load)
print(r.url)      
python-requests的簡單用法

用清單傳遞參數

eg:

load = {'key1':'value1','key2':['value2','value3']}
r = requests.get('http://httpbin.org/get',params = load)
print(r.url)      
python-requests的簡單用法

r.raw傳回原始socket respons,需要加參數stream=true

r = requests.get('https://api.github.com/events', stream = True)
print(r.raw)
print(r.raw.read(10))      
python-requests的簡單用法

傳遞headers

eg:

url = 'http://httpbin.org'
headers = {'user-agent':'my-app/0.0.1'}
r = requests.get(url,headers = headers)
print(r.url)      
python-requests的簡單用法

傳遞cookies

url = 'http://httpbin.org/cookies'
r = requests.get(url,cookies=dict(cookies_are='working'))
#r.text 傳回headers中的編碼解析的結果,可以通過r.encoding = 'gbk'來變更解碼方式
print(r.text)      
python-requests的簡單用法

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)      
python-requests的簡單用法
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()      
python-requests的簡單用法

如果傳回碼是200,則不會抛出異常,即:

bad_r = requests.get('http://httpbin.org/get')
print(bad_r.status_code)
bad_r.raise_for_status()      
python-requests的簡單用法
讀取頭部資訊
r = requests.get("http://httpbin.org/get")
print(r.headers)
print(r.headers['Content-Type'])      
python-requests的簡單用法
重定向與請求曆史
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