requests

  python标准库中提供了:urllib,urllib2,httplib等模块以供Http请求,但是,它的API太次了。

  它是为另一个时代,另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

  requests是使用Apache2 Licensed许可证的基于Python开发的HTTP库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。

1.GET请求

  

#1.无参数实例
import requests
ret = requests.get("https://github.com/timeline.json")

print(ret.url)
print(ret.text)

#2.有参数实例
import requests

payload = {"key1":"value1","key2":"value2"}

ret = requests.get("http"//httpbin.org/get",params=payload)

print(ret.url)
print(ret.text)

2.POST请求

# 1.基本POST实例
import requests

payload = {"key1":"value1","key2":"value2"}
ret = requests.post("http://httpbin.org/post",data=payload)

print(ret.text)

 

# 2.发送请求头和数据实例

import requests
import json

url = "https://api.github.com/some/endpoint"
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.其他请求

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)

4.更多参数

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': file-tuple}``) for multipart encoding upload.
        ``file-tuple`` can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')``
        or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content-type'`` is a string
        defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers
        to add for the file.
    :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
      >>> req = requests.request('GET', 'http://httpbin.org/get')
      <Response [200]>
    """

参数列表
参数列表

相关文章: