1. 程式人生 > 其它 >Python-requests網路庫詳解

Python-requests網路庫詳解

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

layout: default title:Python-requests網路庫詳解 date: 2017-07-24 16:34:00 tags:

Python-requests網路庫詳解

Requests 是用Python語言編寫,基於 urllib,採用 Apache2 Licensed 開源協議的 HTTP 庫。它比 urllib 更加方便,可以節約我們大量的工作,完全滿足 HTTP 測試需求.Requests 的哲學是以 PEP 20 的習語為中心開發的,所以它比 urllib 更加 Pythoner.

###requests安裝 通過pip安裝

pip install requests

原始碼安裝

$ git clone git://github.com/kennethreitz/requests.git
$ cd requests
$ python setup.py install

簡單get請求


import requests
import json

r = requests.get('http://www.baidu.com')
print r.status_code # 狀態碼
print r.text # text格式
con = r.content #內容這裡返回的是html標籤

POST請求

# 把引數名和值已鍵值對的方式 放到字典裡面
payload = dict(key1='value1', key2='value2')
r = requests.post('http://httpbin.org/post', data=payload)
#也可以以json格式上傳
r = requests.post('https:www.baidu.com, data=json.dumps({'some': 'data'}))
 print(r.text)
   {
     ...
     "form": {
       "key2": "value2",
       "key1": "value1"
     },
     ...
   }

更多的請求方法參考

requests.api

輸入圖片說明 自定義header

data = {'some': 'data'}
headers = {'content-type': 'application/json',
           'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
 
r = requests.post('https:www.baidu.com', data=data, headers=headers)

response響應 requests提供了一個response物件,其儲存了伺服器響應的內容,如上例項中已經提到的 r.text、r.status_code……可以通過 r.text ,r.content,r.json等方法獲取到對應的格式

  • r.status_code #響應狀態碼
  • r.raw #返回原始響應體,也就是 urllib 的 response 物件,使用 r.raw.read() 讀取
  • r.content #位元組方式的響應體,會自動為你解碼 gzip 和 deflate 壓縮
  • r.text #字串方式的響應體,會自動根據響應頭部的字元編碼進行解碼
  • r.headers #以字典物件儲存伺服器響應頭,但是這個字典比較特殊,字典鍵不區分大小寫,若鍵不存在則返回None
  • #特殊方法#
  • r.json() #Requests中內建的JSON解碼器
  • r.raise_for_status() #失敗請求(非200響應)丟擲異常

正常測試 請求異常

今天先到這明天繼續分解

轉載於:https://my.oschina.net/roycehe/blog/1486482