本文介紹 Python Requests 庫的開發者接口,主要內容包括:python
目錄json
1、主要接口緩存
1. requests.request()服務器
2. requests.head()、get()、post()、put()、patch()、delete()cookie
2、異常session
5、Response對象socket
6、Sessionide
1. requests.request(method, url, **kwargs)
構造併發送一個Request對象,返回一個Response對象。
參數:
示例:
>>> import requests >>> req = requests.request('GET', 'http://httpbin.org/get') <Response [200]>
2. requests.head(url, **kwargs)
發送一個 HEAD 請求,返回一個 Response 對象
參數:
3. requests.get(url, **kwargs)
發送一個 GET 請求,返回一個 Response 對象
參數:
4. requests.post(url, data=None, **kwargs)
發送一個 POST 請求,返回一個 Response 對象
參數:
5. requests.put(url, data=None, **kwargs)
發送一個 PUT 請求,返回一個 Response 對象
參數:
6. requests.patch(url, data=None, **kwargs)
發送一個 PUT 請求,返回一個 Response 對象
參數:
7. requests.delete(url, **kwargs)
發送一個 PUT 請求,返回一個 Response 對象
參數:
exception requests.RequestException
處理你的請求時出現了一個有歧義的異常
exception requests.ConnectionError
鏈接異常
exception requests.HTTPError(*args, **kwargs)
HTTP 錯誤
exception requests.URLRequired
無效的請求 URL
exception requests.TooManyRedirects
重定向過多
exception requests.exceptions.ConnectTimeout(*args, **kwargs)
The request timed out while trying to connect to the remote server.
Requests that produced this error are safe to retry.
exception requests.exceptions.ReadTimeout(*args, **kwargs)
The server did not send any data in the allotted amount of time.
exception requests.exceptions.Timeout(*args, **kwargs)
請求超時限制,Catching this error will catch both ConnectTimeout and ReadTimeout errors.
requests.Request(method=None, url=None, headers=None, files=None, data={}, params={}, auth=None, cookies=None, hooks=None)
由用戶建立的 Request 對象,用來準備一個 PreparedRequest 對象,後者被髮給服務器
參數:
示例:
>>> import requests >>> req = requests.Request('GET', 'http://httpbin.org/get') >>> req.prepare() <PreparedRequest [GET]>
方法:
1. register_hook(event, hook)
註冊一個事件鉤子
2. deregister_hook(event, hook)
撤銷一個已經註冊的 hook,若是 hook 存在則返回 True,不然返回 False
3. prepare()
構造一個 PreparedRequest 對象用於傳輸,返回一個 PreparedRequest 對象
class requests.PreparedRequest
徹底可變的 PreparedRequest 對象,包含將會發送給服務器的字節,由 Request 或手動建立
示例:
>>> import requests >>> req = requests.Request('GET', 'http://httpbin.org/get') >>> r = req.prepare() <PreparedRequest [GET]> >>> s = requests.Session() >>> s.send(r) <Response [200]>
屬性與方法:
1. body = None
發送給服務器的請求 body
2. deregister_hook(event, hook)
撤銷一個已經註冊的 hook,若是 hook 存在則返回 True,不然返回 False
3. headers = None
由HTTP headers構成的字典
4. hooks = None
dictionary of callback hooks, 僅供內部使用
5. method = None
HTTP 方法
6. path_url
構造要使用的路徑URL
7. prepare(method=None, url=None, headers=None, files=None, data=None, params=None, auth=None, cookies=None, hooks=None, json=None)
用給定的參數準備整個請求
8. prepare_auth(auth, url='')
準備給定的 HTTP 認證數據
9. prepare_body(data, files, json=None)
準備給定的 HTTP body 數據
10. prepare_cookies(cookies)
準備給定的 HTTP cookie 數據
11. prepare_headers(headers)
準備給定的 HTTP headers
12. prepare_hooks(hooks)
準備給定的 hooks
13. prepare_method(method)
準備給定的 HTTP 方法
14. prepare_url(url, params)
準備給定的 HTTP URL
15. register_hook(event, hook)
適當地註冊一個 hook
16. url = None
將請求發往的 HTTP URL
requests.Response
Response 對象,包含一個服務器對與 HTTP 請求的響應
屬性與方法:
1. apparent_encoding
The apparent encoding, provided by the lovely Charade library (Thanks, Ian!).
2. content
以字節表示的響應內容
3. cookies = None
一個服務器發回的 cookie 的 CookieJar
4. elapsed = None
發出請求和接收到響應之間的時間間隔 (一個 timedelta)
5. encoding = None
訪問r.text時要以何種編碼方式解碼
6. headers = None
大小寫無關的響應頭組成的字典,例如: headers['content-encoding'] 將會返回 'Content-Encoding' 響應頭的值
7. history = None
A list of Response objects from the history of the Request. Any redirect responses will end up here. The list is sorted from the oldest to the most recent request.
8. iter_content(chunk_size=1, decode_unicode=False)
Iterates over the response data. This avoids reading the content at once into memory for large responses. The chunk size is the number of bytes it should read into memory. This is not necessarily the length of each item returned as decoding can take place.
9. iter_lines(chunk_size=512, decode_unicode=None)
Iterates over the response data, one line at a time. This avoids reading the content at once into memory for large responses.
10. json(**kwargs)
若是存在,返回JSON格式編碼的響應內容
參數:
11. links
Returns the parsed header links of the response, if any.
12. raise_for_status()
Raises stored HTTPError, if one occurred.
13. raw = None
File-like object representation of response (for advanced usage). Requires that ``stream=True` on the request.
14. status_code = None
Integer Code of responded HTTP Status.
15. text
uncode格式的響應內容
若是 Response.encoding 是 None 且 chardet 模塊可用,將會猜想響應的編碼格式
16. url = None
響應的最終URL地址
requests.Session
一個 Requests 會話對象,提供 cookie 的存儲,鏈接池和配置
示例:
>>> import requests >>> s = requests.Session() >>> s.get('http://httpbin.org/get') 200
屬性與方法:
1. auth = None
附加到 Request 對象上的默認認證元組或對象
2. cert = None
SSL 證書的缺省值
3. close()
關閉全部的 adapters 和 session
4. delete(url, **kwargs)
發送一個 DELETE 請求,返回 Response 對象
參數:
5. get(url, **kwargs)
發送一個 GET 請求,返回 Response 對象
參數:
6. get_adapter(url)
返回給定URL的適當鏈接適配器
7. head(url, **kwargs)
發送一個 HEAD 請求,返回 Response 對象
參數:
8. headers = None
一個大小寫不敏感的字典,包含了這個 Session 發出的全部 Request 對象都包含的 headers
9. hooks = None
事件處理 hook
10. max_redirects = None
最大重定向次數
11. mount(prefix, adapter)
將一個鏈接適配器註冊到一個前綴上
12. options(url, **kwargs)
發送一個 OPTIONS 請求,返回 Response 對象
參數:
13. params = None
Dictionary of querystring data to attach to each Request. The dictionary values may be lists for representing multivalued query parameters.
14. patch(url, data=None, **kwargs)
發送一個 PATCH 請求,返回 Response 對象
參數:
15. post(url, data=None, **kwargs)
發送一個 POST 請求,返回 Response 對象
參數:
16. proxies = None
字典,將協議映射爲每一個Request使用的代理URL地址(例如: {‘http’: ‘foo.bar:3128’})
17. put(url, data=None, **kwargs)
發送一個 PUT 請求,返回 Response 對象
參數:
18. resolve_redirects(resp, req, stream=False, timeout=None, verify=True, cert=None, proxies=None)
接受一個 Response,返回一個 Responses 的 generator
19. send(request, **kwargs)
發送一個給定的 PreparedRequest 對象
20. stream = None
流式響應內容
21. trust_env = None
是否信任環境
22. verify = None
SSL 驗證的默認值
class requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10, max_retries=0, pool_block=False)
針對 urllib3 的內置 HTTP Adapter,經過實現傳輸適配器接口,爲 session 和 HTTP、 HTTPS鏈接提供了一個通用的接口。該類的實例一般由內部包裹下的Session類建立。
參數:
示例:
>>> import requests >>> s = requests.Session() >>> a = requests.adapters.HTTPAdapter(max_retries=3) >>> s.mount('http://', a)
方法:
1. add_headers(request, **kwargs)
添加須要的 header,用戶代碼中不該該調用該方法,該方法應該只在 HTTPAdapter 的子類中使用
參數:
2. build_response(req, resp)
從一個 urllib3 響應構建一個Response對象,用戶代碼中不應調用該方法,該方法應該只在 HTTPAdapter 的子類中使用
參數:
3. cert_verify(conn, url, verify, cert)
驗證一個 SSL 證書,用戶代碼中不應調用該方法,該方法應該只在 HTTPAdapter 的子類中使用
參數:
4. close()
處理掉全部的內部狀態
當前該方法僅僅關閉 PoolManager 進而斷開池中的鏈接
5. get_connection(url, proxies=None)
對於給定的URL,返回一個 urllib3 鏈接。 用戶代碼中不應調用該方法,該方法應該只在 HTTPAdapter 的子類中使用
參數:
url – 要鏈接的URL
proxies – (可選) 一個 Requests 風格的字典,內容是這次請求使用的代理
6. init_poolmanager(connections, maxsize, block=False, **pool_kwargs)
初始化一個 urllib3 PoolManager 實例
用戶代碼中不應調用該方法,該方法應該只在 HTTPAdapter 的子類中使用
參數:
7. proxy_headers(proxy)
Returns a dictionary of the headers to add to any request sent through a proxy. This works with urllib3 magic to ensure that they are correctly sent to the proxy, rather than in a tunnelled request if CONNECT is being used.
用戶代碼中不應調用該方法,該方法應該只在 HTTPAdapter 的子類中使用
參數:
8. proxy_manager_for(proxy, **proxy_kwargs)
返回給定代理的 urllib3 ProxyManager 對象,用戶代碼中不應調用該方法,該方法應該只在 HTTPAdapter 的子類中使用
參數:
返回:
ProxyManager
9. request_url(request, proxies)
獲取最後一個請求的url,若是消息是由HTTP代理髮送的,則必須使用完整的URL,不然只須要使用URL的路徑部分
用戶代碼中不應調用該方法,該方法應該只在 HTTPAdapter 的子類中使用
參數:
10. send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)
發送 PreparedRequest 對象,返回 Response 對象
參數:
class requests.auth.AuthBase
全部認證的基類
class requests.auth.HTTPBasicAuth(username, password)
將 HTTP Basic Authentication 附加到給定的 Request 對象
class requests.auth.HTTPProxyAuth(username, password)
將 HTTP Proxy Authentication 附加到給定的 Request 對象
class requests.auth.HTTPDigestAuth(username, password)
將 HTTP Digest Authentication 附加到給定的 Request 對象
requests.utils.get_encodings_from_content(content)
返回給定內容的編碼格式
參數:
requests.utils.get_encoding_from_headers(headers)
根據給定的 HTTP Header 字典返回編碼格式
參數:
requests.utils.get_unicode_from_response(r)
以 unicode 返回響應內容
參數:
嘗試:
requests.codes()
查詢狀態碼字典中對應的鍵/值
>>> requests.codes['temporary_redirect'] 307 >>> requests.codes.teapot 418 >>> requests.codes['\o/'] 200