requests模塊
在Python內置模塊(urllib、urllib2、httplib)的基礎上進行了高度的封裝,從而使得Pythoner更好的進行http請求,使用Requests可以輕而易舉的完成瀏覽器可有的任何操作。Requests 是使用 Apache2 Licensed 許可證的 基於Python開發的HTTP 庫。
requests使用
一、GET請求
向 https://github.com/timeline.json 發送一個GET請求,將請求和響應相關均封裝在 ret 對象中。
1、無參數實例
1
2
3
4
5
6
|
import
requests
print
ret.url
print
ret.text
|
2、有參數實例
1
2
3
4
5
6
7
|
import
requests
payload
=
{
'key1'
:
'value1'
,
'key2'
:
'value2'
}
print
ret.url
print
ret.text
|
二、POST請求
向https://api.github.com/some/endpoint發送一個POST請求,將請求和相應相關的內容封裝在 ret 對象中。
1、基本POST實例
1
2
3
4
5
6
|
import
requests
payload
=
{
'key1'
:
'value1'
,
'key2'
:
'value2'
}
print
ret.text
|
2、發送請求頭和數據實例
1
2
3
4
5
6
7
8
9
10
11
|
import
requests
import
json
payload
=
{
'some'
:
'data'
}
headers
=
{
'content-type'
:
'application/json'
}
ret
=
requests.post(url, data
=
json.dumps(payload), headers
=
headers)
print
ret.text
print
ret.cookies
|
3、其他請求
1
2
3
4
5
6
7
8
9
10
|
requests.get(url, params
=
None
,
*
*
kwargs)
requests.post(url, data
=
None
, json
=
None
,
*
*
kwargs)
requests.put(url, data
=
None
,
*
*
kwargs)
requests.head(url,
*
*
kwargs)
requests.delete(url,
*
*
kwargs)
requests.patch(url, data
=
None
,
*
*
kwargs)
requests.options(url,
*
*
kwargs)
# 以上方法均是在此方法的基礎上構建
requests.request(method, url,
*
*
kwargs)
|
更多參數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
def
request(method, url,
*
*
kwargs):
"""Constructs and sends a :class:`Request <Request>`.
:param method: method for the new :class:`Request` object.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary or bytes to be sent in the query string for the :class:`Request`.
:param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`.
:param json: (optional) json data to send in the body of the :class:`Request`.
:param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`.
:param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.
:param files: (optional) Dictionary of ``'name': file-like-objects`` (or ``{'name': ('filename', fileobj)}``) for multipart encoding upload.
:param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth.
:param timeout: (optional) How long to wait for the server to send data
before giving up, as a float, or a :ref:`(connect timeout, read
timeout) <timeouts>` tuple.
:type timeout: float or tuple
:param allow_redirects: (optional) Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.
:type allow_redirects: bool
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
:param verify: (optional) whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to ``True``.
:param stream: (optional) if ``False``, the response content will be immediately downloaded.
:param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.
:return: :class:`Response <Response>` object
:rtype: requests.Response
Usage::
>>> import requests
<Response [200]>
"""
# By using the 'with' statement we are sure the session is closed, thus we
# avoid leaving sockets open which can trigger a ResourceWarning in some
# cases, and look like a memory leak in others.
with sessions.Session() as session:
return
session.request(method
=
method, url
=
url,
*
*
kwargs)
|
更多詳細資料
更多requests模塊相關的文檔見:http://cn.python-requests.org/zh_CN/latest/