requests庫的入門

requests庫的入門

1.發送請求

導入Requestshtml

>>> import requests1

HTTP的請求類型:

1.GET:它本質就是發送一個請求來取得服務器上的某一資源。資源經過一組HTTP頭和呈現數據(如HTML文本,或者圖片或者視頻等)返回給客戶端。GET請求中,永遠不會包含呈現數據。python

2.POST:向URL指定的資源提交數據或附加新的數據。json

3.PUT:一般用於向服務器發送請求,若是URI不存在,則要求服務器根據請求建立資源,若是存在,服務器就接受請求內容,並修改URI資源的原始版本。服務器

4.HEAD:只請求頁面首部。cookie

5.DELETE:刪除服務器上的某資源。網絡

6.OPTIONS: 用於獲取當前URL所支持的方法。若是請求成功,會有一個Allow的頭包含相似「GET,POST」這樣的信息。app

發送請求:ide

>>> r= requests.get("http://httpbin.org/get")>>> r = requests.post("http://httpbin.org/post")>>> r = requests.put("http://httpbin.org/put")>>> r = requests.delete("http://httpbin.org/delete")>>> r = requests.head("http://httpbin.org/get")>>> r = requests.options("http://httpbin.org/get")123456

傳遞參數

參數 說明
params 字典或字節序列,做爲參數增長到url中
data 字典、字節序列或文件對象,做爲Request的內容
json JSON格式的數據,做爲Request的內容
headers 字典,HTTP定製頭
cookies 字典或CookieJar,Request中的cookie
auth 元組,支持HTTP認證功能
files 字典類型,傳輸文件
timeout 設定超時時間,秒爲單位
proxies 字典類型,設定訪問代理服務器,能夠增長登陸認證
allow_redirects True/False,默認爲True,重定向開關
stream True/False,默認爲True,獲取內容當即下載開關
verify True/False,默認爲True,認證SSL證書開關
cert 本地SSL證書路徑

傳遞url參數

使用params關鍵字參數,以一個字典提供參數。post

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get("http://httpbin.org/get", params=payload)
>>> print(r.url)http://httpbin.org/get?key2=value2&key1=value11234

字典裏值爲 None 的鍵都不會被添加到 URL 的查詢字符串裏;還能夠將一個列表做爲值傳入:編碼

>>> payload={'admin':'test','key':None,'password':['123456','zxcvbn',None]}
>>> r= requests.post("http://httpbin.org/post",params=payload)
>>> print(r.url)http://httpbin.org/post?admin=test&password=123456&password=zxcvbn1234

定製請求頭

使用headers做爲參數,以一個字典提供參數

>>> url='http://www.baidu.com'>>> headers={'user-agent':"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"}>>> r=requests.get(url,headers=headers)>>> r.text12345

超時

在通過以 timeout 參數設定的秒數時間以後中止等待響應

>>> requests.get("http://www.baidu.com",timeout=0.001)
Traceback (most recent call last):  ...requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='www.baidu.com', port=80): Max retries e
xceeded with url: / (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.HTTPConnect
ion object at 0x02F66A10>, 'Connection to www.baidu.com timed out. (connect timeout=0.001)'))123456

發送cookies

使用cookies參數

>>> url = 'http://httpbin.org/cookies'>>> cookies = dict(cookies_are='test')>>> r = requests.get(url, cookies=cookies)>>> r.text'{"cookies": {"cookies_are": "test"}}'12345

使用data做爲參數,以一個字典提供參數

>>> payload={'admin':'test','password':'123456','yanzhengma':None}
>>> r=requests.post("http://httpbin.org/post",data=payload)
>>> print(r.text)
{  "args": {},  "data": "",  "files": {},  "form": {    "admin": "test",    "password": "123456"
  },  ...}12345678910111213

requests.get()

requests.get(url, params=None, **kwargs)

url : 擬獲取頁面的url連接

params : url中的額外參數,字典或字節流格式,可選

**kwargs: 12個控制訪問的參數

requests.post()

requests.post(url, data=None, json=None, **kwargs)

url : 擬更新頁面的url連接

data : 字典、字節序列或文件,Request的內容

json : JSON格式的數據,Request的內容

**kwargs: 12個控制訪問的參數

requests.delete()

requests.delete(url, **kwargs)

url : 擬刪除頁面的url連接

**kwargs: 12個控制訪問的參數

requests.request()

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

method : 請求方式,對應get/put/post等7種(好比 requests.request(‘GET’)

url : 擬獲取頁面的url連接

**kwargs: 控制訪問的參數,共13個

2.響應內容

屬性 說明
r.status_code 請求的返回狀態,200表示鏈接成功,404表示失敗
r.text HTTP響應內容的字符串形式,即,url對應的頁面內容
r.encoding 從HTTP header中猜想的響應內容編碼方式(若是header中不存在charset,則認爲編碼爲ISO‐8859‐1
r.text 根據r.encoding顯示網頁內容)
r.apparent_encoding 從內容中分析出的響應內容編碼方式(備選編碼方式)
r.content HTTP響應內容的二進制形式
>>> r=requests.get("http://www.baidu.com")
>>> r.status_code
200
>>> r.encoding
'ISO-8859-1'
>>> r.text
u'<!DOCTYPE html>\r\n<!--STATUS OK--><html>...
>>> r.apparent_encoding
'utf-8'
>>> r.encoding='utf-8'
>>> r.encoding
'utf-8'
>>> r.text
u'<!DOCTYPE html>\r\n<!--STATUS OK--><html>...1234567891011121314

快速訪問響應cookie

>>> url = 'http://example.com/some/cookie/setting/url'>>> r = requests.get(url)>>> r.cookies['example_cookie_name']'example_cookie_value'1234

錯誤與異常

遇到網絡問題(如:DNS 查詢失敗、拒絕鏈接等)時,Requests 會拋出一個 ConnectionError 異常。

若是 HTTP 請求返回了不成功的狀態碼, Response.raise_for_status() 會拋出一個 HTTPError 異常。

若請求超時,則拋出一個 Timeout 異常。

若請求超過了設定的最大重定向次數,則會拋出一個 TooManyRedirects 異常。

全部Requests顯式拋出的異常都繼承自 requests.exceptions.RequestException。

參考文檔

Requests: 讓 HTTP 服務人類

相關文章
相關標籤/搜索