基於2.19.1版本的requests庫,參考官方文件
首先是安裝
pip install requests
匯入使用
import requests
1. 發起請求
request.請求方式(請求引數)
例如:
response = requests.get('', params=)
response = requests.post('', data=)
請求攜帶自己的cookie
>>> url = ''
>>> cookies = dict(cookies_are='working')
>>> r = requests.get(url, cookies=cookies)
>>> r.text
'}'
method: 請求方式
url: 請求的url位址
params: url查詢字串,型別要求字典或bytes
data: 請求體,型別要求字典、元組列表、bytes和檔案物件。
json:請求體,型別要求python資料型別被json序列化後
headers: 請求頭,型別要求 http請求頭字典
cookies: 型別要求字典或cookiejar物件
files: 型別要求字典
auth:身份認證,型別要求元組auth=("user", "pass")
timeout: 請求超時, 單位秒, float or tuple
allow_redirects: 重定向, 布林型
proxies: **, 字典型別
verify: 是否適用ca認證,布林型
cert:認證證書, 型別為字串和元組,字串證書.pem檔案的路徑, 元組('cert', 'key')
2.獲取響應
response.方法名
例如:
response.text # 自動解碼響應內容
response.encoding # 檢視當前使用的解碼方式,可以通過response.encoding='utf-8'設定
response.content # 二進位制響應內容
response.json() # 響應資料為json的內容
response.raw # 原始響應物件, 請求引數需設定stream=true
response.raw.read()
上述例子仍有侷限性,response.raw.read()一般不用,讀取響應的流式資料到檔案一般採用以下方法
with open(filename, 'wb') as fd:
for chunk in r.iter_content(chunk_size=128):
fd.write(chunk)
響應的狀態碼
response.status_code # 獲取當前響應的狀態碼
# 請求附帶內建狀態碼,可作為對比
>>> r.status_code == requests.codes.ok
true
響應頭
response.headers
# 任意大寫獲取響應頭
>>> r.headers['content-type']
>>> r.headers.get('content-type')
cookie
response.cookies # 響應的cookie3.自定義headersresponse.request._cookies # 請求的cookie,
# 利用 requests.utils.dict_from_cookiejar 轉成字典
cook_dict = requests.utils.dict_from_cookiejar(request_cookie)
在請求引數headers傳入
例如:
但,我們自己設定的headers優先順序比較低:
如果在主機外重定向,將刪除headers;4. 複雜的post請求**含有headers將覆蓋等...
直接傳遞json引數的post請求# 1 傳遞字典,會自動轉化為表單提交
payload =payload =
r = requests.post("", data=payload)
print(r.text)
, ...
}# 2 還可以傳遞元組列表,乙個鍵對應多值及其適用
payload = (('key1', 'value1'), ('key1', 'value2'))
r = requests.post('', data=payload)
print(r.text)
, ...
}
r = requests.post("", data=payload)
print(r.text)
, ...
}# 2 還可以傳遞元組列表,乙個鍵對應多值及其適用
payload = (('key1', 'value1'), ('key1', 'value2'))
r = requests.post('', data=payload)
print(r.text)
, ...
}
上傳檔案的post請求# 轉為json傳遞
data=json.dumps(payload))payload =
r = requests.post(url,data=json.dumps(payload))
# 直接傳遞,系統自己轉化為json資料
r = requests.post(url, json=payload)
# 直接傳遞,系統自己轉化為json資料
r = requests.post(url, json=payload)
files = # 以二進位制模式開啟檔案,避免不必要的錯誤
r = requests.post(url,files=files)
files=files)
5.重定向和歷史和超時
可以通過response.history檢視請求的所有重定向,返回的是列表,順序為響應的順序
# http請求被重定向https
>>> r = requests.get('')
>>> r.url
''>>> r.status_code
200>>> r.history
重定向的設定,只要在請求中設定引數allow_redirects=true or false
設定請求超時,只要在請求中設定引數timeout=seconds, 程式將在secodes秒後沒有響應而引發異常,如果沒設定,則不限時
6 異常和丟擲
丟擲響應錯誤
response.raise_for_status() # 如果響應200,結果為none
none
response.raise_for_status() 響應狀態碼不是200是會丟擲異常
網路問題:dns、拒絕連線等會丟擲connectionerror,
如果請求超時,timeout
則會引發異常。
如果請求超過配置的最大重定向數,toomanyredirects
則會引發異常。
請求顯式引發的所有異常都繼承自requests.exceptions.requestexception
。
python中的requests模組
requests是用python實現的第三方http庫。post介面 結果 還有乙個簡單的示例 更新 傳送請求與傳遞引數 帶引數的get請求 impor requests r requests.get 最基本的get請求 print r.status code 獲取返回狀態碼 print r.url...
python中requests的安裝
本文主要說明了在自帶有pip的python中如何安裝requests。pip在大部分2.7或者3以上的python都已經自帶了。那麼如何判斷是否自帶有pip 在命令列 win r 中輸入 python m pip version 出現如下圖的提示,則表示自帶有pip 準備好pip之後,如果pytho...
python中requests小技巧
關於 python requests 在使用中,總結了一些小技巧把,記錄下。1 保持請求之間的cookies,我們可以這樣做。2 請求時,會加上headers,一般我們會寫成這樣 唯一不便的是之後的 每次都需要這麼寫,顯得臃腫,所以我們可以這樣 3 預設requests請求失敗後不會重試,但是我們跑...