首页 > 编程 > Python > 正文

Python开发的HTTP库requests详解

2020-02-16 02:09:50
字体:
来源:转载
供稿:网友

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]>  """            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表