python request库的介绍

本文详细介绍了使用Python的requests库进行HTTP请求的方法,包括GET和POST请求的具体实现方式,以及如何设置请求参数、数据、头部信息等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、http 基础介绍

通过 requests 发送的请求都将通过以下函数实现

 

    def request(self, method, url,

            params=None, data=None, headers=None, cookies=None, files=None,

            auth=None, timeout=None, allow_redirects=True, proxies=None,

            hooks=None, stream=None, verify=None, cert=None, json=None):

        """Constructs a :class:`Request <Request>`, prepares it and sends it.

        Returns :class:`Response <Response>` object.

        :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, list of tuples, bytes, or file-like

            object to send in the body of the :class:`Request`.

        :param json: (optional) json 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 ``'filename': file-like-objects``

            for multipart encoding upload.

        :param auth: (optional) Auth tuple or callable 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) Set to True by default.

        :type allow_redirects: bool

        :param proxies: (optional) Dictionary mapping protocol or protocol and

            hostname to the URL of the proxy.

        :param stream: (optional) whether to immediately download the response

            content. Defaults to ``False``.

        :param verify: (optional) Either a boolean, in which case it controls whether we verify

            the server's TLS certificate, or a string, in which case it must be a path

            to a CA bundle to use. Defaults to ``True``.

        :param cert: (optional) if String, path to ssl client cert file (.pem).

            If Tuple, ('cert', 'key') pair.

        :rtype: requests.Response

        """

        # Create the Request.

        req = Request(

            method=method.upper(),

            url=url,

            headers=headers,

            files=files,

            data=data or {},

            json=json,

            params=params or {},

            auth=auth,

            cookies=cookies,

            hooks=hooks,

        )

        prep = self.prepare_request(req)

 

        proxies = proxies or {}

 

        settings = self.merge_environment_settings(

            prep.url, proxies, stream, verify, cert

        )

 

        # Send the request.

        send_kwargs = {

            'timeout': timeout,

            'allow_redirects': allow_redirects,

        }

        send_kwargs.update(settings)

        resp = self.send(prep, **send_kwargs)

 

        return resp

其中的主要参数介绍如下:

 

method:请求的方式,get 请求将提交的数据放置在HTTP请求协议头中, post 提交的数据则放在实体数据中

GET: 请求指定的页面信息,并返回实体主体。

HEAD: 只请求页面的首部。

POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

PUT: 从客户端向服务器传送的数据取代指定的文档的内容。

DELETE: 请求服务器删除指定的页面。

url:访问的网址,比如 www.baidu.com

params:在 get 方法中介绍

data:在 post 方法中介绍

headers:告诉服务器本次请求的一些信息,比如可以接受的媒体类型(text/html,或所有类型*/*),可以接受的编码方式等

files:将请求信息以文件的方式提供,必须以二进制的方式读取

upload_files = {'file': open('report.xls', 'rb')}

r = requests.post(url, files=upload_files)

timeout:如果需要获取服务器返回信息,同时不希望无限等待,可以设置超时。超时后将返回异常

json:在 post 方法中介绍

二、get 方法

def get(url, params=None, **kwargs):

    r"""Sends a GET request.

    :param url: URL for the new :class:`Request` object.

    :param params: (optional) Dictionary, list of tuples or bytes to send

        in the body of the :class:`Request`.

    :param \*\*kwargs: Optional arguments that ``request`` takes.

    :return: :class:`Response <Response>` object

    :rtype: requests.Response

    """

 

    kwargs.setdefault('allow_redirects', True)

    return request('get', url, params=params, **kwargs)

参数说明:

 

params:将请求信息以字典、元素列表或者字节的方式提供

r = requests.get('https://www.douban.com/search', params={'q': 'python', 'cat': '1001'})

r.url # 实际请求的URL('https://www.douban.com/search?q=python&cat=1001')

其他参数:见第一部分的介绍

三、post 方式

def post(url, data=None, json=None, **kwargs):

    r"""Sends a POST request.

    :param url: URL for the new :class:`Request` object.

    :param data: (optional) Dictionary, list of tuples, 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 \*\*kwargs: Optional arguments that ``request`` takes.

    :return: :class:`Response <Response>` object

    :rtype: requests.Response

    """

 

    return request('post', url, data=data, json=json, **kwargs)

参数介绍:

 

data:将请求信息以字典、元素列表或者字节的方式提供

r = re

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值