1. 程式人生 > >python中requests的應用

python中requests的應用

方式一

response = requests.request(method, url, **kwargs)

r = requests.request('GET', url, **kwargs)
r = requests.request('HEAD', url, **kwargs)
r = requests.request('POST', url, **kwargs)
r = requests.request('PUT', url, **kwargs)
r = requests.request('PATCH', url, **kwargs)
r = requests.request('delete', url, **kwargs)
r = requests.request('OPTIONS', url, **kwargs)

方式二

 response = requests.get(url,**kwargs)

requests.get(url,**kwargs)     獲取HTML網頁的主要方法,對應於HTTP的GET
requests.head(url,**kwargs)    獲取HTML網頁頭資訊的方法,對應於HTTP的HEAD
requests.post(url,**kwargs)    向HTML網頁提交POST請求的方法,對應於HTTP的POST
requests.put(url,**kwargs)     向HTML網頁提交PUT請求的方法,對應於HTTP的PUT
requests.patch(url,**kwargs)   向HTML網頁提交區域性修改請求,對應於HTTP的PATCH
requests.delete(url,**kwargs)  向HTML頁面提交刪除請求,對應於HTTP的DELETE

∙ **kwargs: 控制訪問的引數,均為可選項

params :字典或位元組序列,作為引數增加到url中

kv = {'key1': 'value1', 'key2': 'value2'}
r = requests.request('GET', 'http://python123.io/ws', params=kv)
print(r.url)

data :字典、位元組序列或檔案物件,作為Request的內容

kv = {'key1': 'value1', 'key2': 'value2'}
r = requests.request('POST', 'http://python123.io/ws', data=kv)
body = '主體內容'
r = requests.request('POST', 'http://python123.io/ws', data=body)

json:: JSON格式的資料,作為Request的內容

kv = {'key1': 'value1'}
r = requests.request('POST', 'http://python123.io/ws', json=kv)

headers:字典,HTTP定製頭

hd = {'user‐agent': 'Chrome/10'}
r = requests.request('POST', 'http://python123.io/ws', headers=hd)

cookies :字典或CookieJar,Request中的cookie

auth:元組,支援HTTP認證功能

許多要求身份認證的web服務都接受 HTTP Basic Auth。這是最簡單的一種身份認證,並且 Requests 對這種認證方式的支援是直接開箱即可用。

以 HTTP Basic Auth 傳送請求非常簡單:

>>> from requests.auth import HTTPBasicAuth
>>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))
<Response [200]>
事實上,HTTP Basic Auth 如此常見,Requests 就提供了一種簡寫的使用方式:

>>> requests.get('https://api.github.com/user', auth=('user', 'pass'))
<Response [200]>
像這樣在一個元組中提供認證資訊與前一個 HTTPBasicAuth 例子是完全相同的。

files:字典型別,傳輸檔案

fs = {'file': open('data.xls', 'rb')}
r = requests.request('POST', 'http://python123.io/ws', files=fs)

timeout :: 設定超時時間,秒為單位

r = requests.request('GET', 'http://www.baidu.com', timeout=10)

proxies :字典型別,設定訪問代理伺服器,可以增加登入認證

pxs = { 'http': 'http://user:[email protected]:1234'
'https': 'https://10.10.10.1:4321' }
r = requests.request('GET', 'http://www.baidu.com', proxies=pxs)

allow_redirects :True/False,預設為True,重定向開關

stream:True/False,預設為True,獲取內容立即下載開關

tarball_url = 'https://github.com/kennethreitz/requests/tarball/master'
r = requests.get(tarball_url, stream=True)

verify :True/False,預設為True,認證SSL證書開關

Requests 可以為 HTTPS 請求驗證 SSL 證書,就像 web 瀏覽器一樣。SSL 驗證預設是開啟的,如果證書驗證失敗,Requests 會丟擲 SSLError:

>>> requests.get('https://requestb.in')
requests.exceptions.SSLError: hostname 'requestb.in' doesn't match either of '*.herokuapp.com', 'herokuapp.com'
在該域名上我沒有設定 SSL,所以失敗了。但 Github 設定了 SSL:

>>> requests.get('https://github.com', verify=True)
<Response [200]>
你可以為 verify 傳入 CA_BUNDLE 檔案的路徑,或者包含可信任 CA 證書檔案的資料夾路徑:

>>> requests.get('https://github.com', verify='/path/to/certfile')
或者將其保持在會話中:

s = requests.Session()
s.verify = '/path/to/certfile'
註解
如果 verify 設為資料夾路徑,資料夾必須通過 OpenSSL 提供的 c_rehash 工具處理。

你還可以通過 REQUESTS_CA_BUNDLE 環境變數定義可信任 CA 列表。

如果你將 verify 設定為 False,Requests 也能忽略對 SSL 證書的驗證。

>>> requests.get('https://kennethreitz.org', verify=False)
<Response [200]>
預設情況下, verify 是設定為 True 的。選項 verify 僅應用於主機證書。

# 對於私有證書,你也可以傳遞一個 CA_BUNDLE 檔案的路徑給 verify。你也可以設定 # REQUEST_CA_BUNDLE 環境變數。

cert:本地SSL證書路徑

你也可以指定一個本地證書用作客戶端證書,可以是單個檔案(包含金鑰和證書)或一個包含兩個檔案路徑的元組:

>>> requests.get('https://kennethreitz.org', cert=('/path/client.cert', '/path/client.key'))
<Response [200]>
或者保持在會話中:

s = requests.Session()
s.cert = '/path/client.cert'
如果你指定了一個錯誤路徑或一個無效的證書:

>>> requests.get('https://kennethreitz.org', cert='/wrong_path/client.pem')
SSLError: [Errno 336265225] _ssl.c:347: error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib