Python之使用request發(fā)送請求

Python3自帶的http.client和urllib.request都能發(fā)送http請求,不過相對來說使用較麻煩,第三方庫requests讓發(fā)送請求更簡單,支持自動編碼解碼,會話保持,長連等

requests安裝

  • Windows: 打開cmd命令行,輸入pip install requests,等待安裝完成即可
  • Linux: (建議使用Python3),終端中輸入pip3 install requests,等待安裝完成即可
  • Mac: (建議使用Python3), sudo python3 -m pip install requests,等待安裝完成即可
    驗證是否安裝成功:
  • 打開命令行,輸入python,在python shell環(huán)境下輸入import requests 沒有報錯即安裝成功
  • 在編輯器中輸入 import requests 沒有報錯即安裝成功

requests的使用

  • 發(fā)送請求分三步
    1,組裝請求: 請求可能包含url,params(url參數(shù)),data(請求數(shù)據(jù)),headers(請求頭),cookies等,最少必須有url
    2,發(fā)送請求,獲取響應(yīng):支持get,post等各種方法發(fā)送,返回的是一個響應(yīng)對象
    3,解析響應(yīng): 輸出響應(yīng)文本
1,發(fā)送一個帶參數(shù)的post請求
headers = {
    'content-type': 'application/x-www-form-urlencoded',
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
}
URL = 'https://******123xue.cn/fs/uc/accessToken/create'
# requests 允許使用 params 關(guān)鍵字參數(shù),以一個字符串字典來提供這些參數(shù)。
payload={
    'corpId': 'fa6aeddc25a848b4bd9e8b925d8c6182',
    'account': '******',
    'pwd': '******',
    'useMobile': False
 }
res = requests.post(url=URL, data=payload, headers=headers)
# 這里返回的是一個json字符串,所以轉(zhuǎn)換成json格式,注意json后面帶括號
res = res.json()

注:1,有些請求的headers可以不填,這里是業(yè)務(wù)需要。

2,發(fā)送put、delete、head、optiions請求也很簡單
r = requests.put('http://yunweicai.com/put', data = {'key':'value'})

r = requests.delete('http://yunweicai.com/delete')

r = requests.head('http://yunweicai.com/get')

r = requests.options('http://yunweicai.com/get')

請求參數(shù)

  • url: 字符串格式,參數(shù)也可以直接寫到url中
  • params:url參數(shù),字典格式
  • data: 請求數(shù)據(jù),字典或字符串格式
  • headers: 請求頭,字典格式
  • cookies: 字典格式,可以通過攜帶cookies繞過登錄
  • files: 字典格式,用于混合表單(form-data)中上傳文件
  • auth: Basic Auth授權(quán),數(shù)組格式 auth=(user,password)
  • timeout: 超時時間(防止請求一直沒有響應(yīng),最長等待時間),數(shù)字格式,單位為秒

響應(yīng)解析

  • res.status_code: 響應(yīng)的HTTP狀態(tài)碼
  • res.reason: 響應(yīng)的狀態(tài)碼含義
  • req.text:響應(yīng)的文本格式,按req.encoding解碼
  • req.content: 響應(yīng)的二進制格式
  • req.encoding: 解碼格式,可以通過修改req.encoding='utf-8'來解決一部分中文亂碼問題
  • req.apparent_encoding:真實編碼,由chardet庫提供的明顯編碼
  • req.json(): (注意,有括號),響應(yīng)的json對象(字典)格式,慎用!如果響應(yīng)文本不是合法的json文本,或報錯
  • req.headers: 響應(yīng)頭
  • req.cookies: 響應(yīng)的cookieJar對象,可以通過req.cookies.get(key)來獲取響應(yīng)cookies中某個key對應(yīng)的值
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容