开发人员界面

文档的这一部分涵盖了请求的所有接口。对于请求依赖外部库的部分,我们在这里记录最重要的部分,并提供到规范文档的链接。

主界面

所有请求的功能都可以通过这7种方法访问。它们都返回 Response 对象。

requests.request(method, url, **kwargs)[源代码]

构造并发送 Request .

参数
  • method -- 新的方法 Request 对象。

  • url -- 新网址 Request 对象。

  • params -- (可选)字典、要在查询字符串中发送的元组或字节列表 Request .

  • data -- (可选)要在正文中发送的字典、元组列表、字节或类似文件的对象 Request .

  • json -- (可选)要在主体中发送的JSON可序列化python对象 Request .

  • headers -- (可选)要与发送的HTTP头的字典 Request .

  • cookies -- (可选)要与一起发送的dict或cookiejar对象 Request .

  • files -- (可选)字典 'name': file-like-objects (或) {{'name': file-tuple}} ) for multipart encoding upload. file-tuple 可以是2元组 ('filename', fileobj) ,三元组 ('filename', fileobj, 'content_type') 或四元组 ('filename', fileobj, 'content_type', custom_headers) 在哪里 'content-type' 是定义给定文件的内容类型的字符串,并且 custom_headers 一个类似dict的对象,包含要为文件添加的附加头。

  • auth -- (可选)auth tuple以启用基本/摘要/自定义http auth。

  • timeout (float or tuple) -- (可选)在放弃前等待服务器发送数据的秒数,以浮点形式,或 (connect timeout, read timeout) 元组。

  • allow_redirects (bool) -- (可选)布尔值。启用/禁用get/options/post/put/patch/delete/head重定向。默认为 True .

  • proxies -- (可选)字典映射协议到代理的URL。

  • verify -- (可选)或者是一个布尔值,在这种情况下,它控制我们是验证服务器的TLS证书,还是一个字符串,在这种情况下,它必须是要使用的CA束的路径。默认为 True .

  • stream -- (可选) False ,将立即下载响应内容。

  • cert -- (可选)如果为字符串,则为SSL客户端证书文件(.pem)的路径。如果tuple(‘cert’,‘key’)对。

返回

Response 对象

返回类型

requests.Response

用法:

>>> import requests
>>> req = requests.request('GET', 'https://httpbin.org/get')
<Response [200]>
requests.head(url, **kwargs)[源代码]

发送头请求。

参数
  • url -- 新网址 Request 对象。

  • **kwargs -- 可选参数 request 拿。

返回

Response 对象

返回类型

requests.Response

requests.get(url, params=None, **kwargs)[源代码]

发送获取请求。

参数
  • url -- 新网址 Request 对象。

  • params -- (可选)字典、要在查询字符串中发送的元组或字节列表 Request .

  • **kwargs -- 可选参数 request 拿。

返回

Response 对象

返回类型

requests.Response

requests.post(url, data=None, json=None, **kwargs)[源代码]

发送POST请求。

参数
  • url -- 新网址 Request 对象。

  • data -- (可选)要在正文中发送的字典、元组列表、字节或类似文件的对象 Request .

  • json -- (可选)要在主体中发送的JSON数据 Request .

  • **kwargs -- 可选参数 request 拿。

返回

Response 对象

返回类型

requests.Response

requests.put(url, data=None, **kwargs)[源代码]

发送卖出请求。

参数
  • url -- 新网址 Request 对象。

  • data -- (可选)要在正文中发送的字典、元组列表、字节或类似文件的对象 Request .

  • json -- (可选)要在主体中发送的JSON数据 Request .

  • **kwargs -- 可选参数 request 拿。

返回

Response 对象

返回类型

requests.Response

requests.patch(url, data=None, **kwargs)[源代码]

发送修补程序请求。

参数
  • url -- 新网址 Request 对象。

  • data -- (可选)要在正文中发送的字典、元组列表、字节或类似文件的对象 Request .

  • json -- (可选)要在主体中发送的JSON数据 Request .

  • **kwargs -- 可选参数 request 拿。

返回

Response 对象

返回类型

requests.Response

requests.delete(url, **kwargs)[源代码]

发送删除请求。

参数
  • url -- 新网址 Request 对象。

  • **kwargs -- 可选参数 request 拿。

返回

Response 对象

返回类型

requests.Response

例外情况

exception requests.RequestException(*args, **kwargs)[源代码]

处理请求时发生不明确的异常。

exception requests.ConnectionError(*args, **kwargs)[源代码]

发生连接错误。

exception requests.HTTPError(*args, **kwargs)[源代码]

发生HTTP错误。

exception requests.URLRequired(*args, **kwargs)[源代码]

请求需要有效的URL。

exception requests.TooManyRedirects(*args, **kwargs)[源代码]

重定向太多。

exception requests.ConnectTimeout(*args, **kwargs)[源代码]

尝试连接到远程服务器时请求超时。

产生此错误的请求可以安全地重试。

exception requests.ReadTimeout(*args, **kwargs)[源代码]

服务器未在分配的时间内发送任何数据。

exception requests.Timeout(*args, **kwargs)[源代码]

请求超时。

捕获此错误将同时捕获 ConnectTimeoutReadTimeout 错误。

请求会话

class requests.Session[源代码]

请求会话。

提供cookie持久性、连接池和配置。

基本用法:

>>> import requests
>>> s = requests.Session()
>>> s.get('https://httpbin.org/get')
<Response [200]>

或者作为上下文管理器:

>>> with requests.Session() as s:
>>>     s.get('https://httpbin.org/get')
<Response [200]>
auth = None

要附加到的默认身份验证元组或对象 Request .

cert = None

ssl客户端证书默认值,如果为字符串,则为ssl客户端证书文件(.pem)的路径。如果tuple(‘cert’,‘key’)对。

close()[源代码]

关闭所有适配器以及会话

cookies = None

包含当前在此会话上设置的所有未完成cookie的cookiejar。默认情况下,它是 RequestsCookieJar 但可能是其他的 cookielib.CookieJar 兼容对象。

delete(url, **kwargs)[源代码]

发送删除请求。退换商品 Response 对象。

参数
  • url -- 新网址 Request 对象。

  • **kwargs -- 可选参数 request 拿。

返回类型

requests.Response

get(url, **kwargs)[源代码]

发送获取请求。退换商品 Response 对象。

参数
  • url -- 新网址 Request 对象。

  • **kwargs -- 可选参数 request 拿。

返回类型

requests.Response

get_adapter(url)[源代码]

返回给定URL的适当连接适配器。

返回类型

requests.adapters.BaseAdapter

get_redirect_target(resp)

接收响应。返回重定向URI或 None

head(url, **kwargs)[源代码]

发送头请求。退换商品 Response 对象。

参数
  • url -- 新网址 Request 对象。

  • **kwargs -- 可选参数 request 拿。

返回类型

requests.Response

headers = None

一个不区分大小写的字典,每个字典的头都要发送 Request 从这里寄来的 Session .

hooks = None

事件处理挂钩。

max_redirects = None

允许的最大重定向数。如果请求超过此限制,则 TooManyRedirects 引发异常。默认为requests.models.default_redirect_limit,即30。

merge_environment_settings(url, proxies, stream, verify, cert)[源代码]

检查环境并将其与某些设置合并。

返回类型

dict

mount(prefix, adapter)[源代码]

将连接适配器注册到前缀。

适配器按前缀长度降序排序。

options(url, **kwargs)[源代码]

发送选项请求。退换商品 Response 对象。

参数
  • url -- 新网址 Request 对象。

  • **kwargs -- 可选参数 request 拿。

返回类型

requests.Response

params = None

要附加到每个查询字符串数据的字典 Request . 字典值可以是表示多值查询参数的列表。

patch(url, data=None, **kwargs)[源代码]

发送补丁请求。退换商品 Response 对象。

参数
  • url -- 新网址 Request 对象。

  • data -- (可选)要在正文中发送的字典、元组列表、字节或类似文件的对象 Request .

  • **kwargs -- 可选参数 request 拿。

返回类型

requests.Response

post(url, data=None, json=None, **kwargs)[源代码]

发送POST请求。退换商品 Response 对象。

参数
  • url -- 新网址 Request 对象。

  • data -- (可选)要在正文中发送的字典、元组列表、字节或类似文件的对象 Request .

  • json -- (可选)json发送到 Request .

  • **kwargs -- 可选参数 request 拿。

返回类型

requests.Response

prepare_request(request)[源代码]

构建一个 PreparedRequest 用于传输并返回。这个 PreparedRequest 已将设置从合并 Request 实例和 Session .

参数

request -- Request 使用此会话的设置准备的实例。

返回类型

requests.PreparedRequest

proxies = None

字典映射协议或协议和主机到代理服务器的URL(例如,http':'foo.bar:3128'、'http://host.name':'foo.bar:4012')的映射协议或协议 Request .

put(url, data=None, **kwargs)[源代码]

发送卖出请求。退换商品 Response 对象。

参数
  • url -- 新网址 Request 对象。

  • data -- (可选)要在正文中发送的字典、元组列表、字节或类似文件的对象 Request .

  • **kwargs -- 可选参数 request 拿。

返回类型

requests.Response

rebuild_auth(prepared_request, response)

重定向时,我们可能希望从请求中除去身份验证,以避免泄漏凭据。此方法在可能的情况下智能地删除和重新应用身份验证,以避免凭据丢失。

rebuild_method(prepared_request, response)

当被重定向时,我们可能希望根据特定规范或浏览器行为更改请求的方法。

rebuild_proxies(prepared_request, proxies)

此方法通过考虑环境变量来重新评估代理配置。如果我们被重定向到一个没有代理覆盖的URL,我们就去掉代理配置。否则,我们将为此URL设置丢失的代理密钥(以防以前的重定向将它们删除)。

必要时,此方法还替换代理授权头。

返回类型

dict

request(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)[源代码]

构建一个 Request ,准备并发送。退换商品 Response 对象。

参数
  • method -- 新的方法 Request 对象。

  • url -- 新网址 Request 对象。

  • params -- (可选)要在查询字符串中发送的字典或字节 Request .

  • data -- (可选)要在正文中发送的字典、元组列表、字节或类似文件的对象 Request .

  • json -- (可选)json发送到 Request .

  • headers -- (可选)要与发送的HTTP头的字典 Request .

  • cookies -- (可选)要与一起发送的dict或cookiejar对象 Request .

  • files -- (可选)字典 'filename': file-like-objects 用于多部分编码上传。

  • auth -- (可选)auth tuple或callable以启用基本/摘要/自定义http auth。

  • timeout (float or tuple) -- (可选)在放弃之前等待服务器发送数据的时间(以浮点形式),或 (connect timeout, read timeout) 元组。

  • allow_redirects (bool) -- (可选)默认设置为真。

  • proxies -- (可选)字典映射协议或协议和主机名到代理的URL。

  • stream -- (可选)是否立即下载响应内容。默认为 False .

  • verify -- (可选)或者是一个布尔值,在这种情况下,它控制我们是验证服务器的TLS证书,还是一个字符串,在这种情况下,它必须是要使用的CA束的路径。默认为 True .

  • cert -- (可选)如果为字符串,则为SSL客户端证书文件(.pem)的路径。如果tuple(‘cert’,‘key’)对。

返回类型

requests.Response

resolve_redirects(resp, req, stream=False, timeout=None, verify=True, cert=None, proxies=None, yield_requests=False, **adapter_kwargs)

接收响应。返回响应或请求的生成器。

send(request, **kwargs)[源代码]

发送一个给定的准备请求。

返回类型

requests.Response

should_strip_auth(old_url, new_url)

决定重定向时是否应删除授权头

stream = None

流响应内容默认值。

trust_env = None

代理配置、默认身份验证等的信任环境设置。

verify = None

SSL验证默认值。

下层阶级

class requests.Request(method=None, url=None, headers=None, files=None, data=None, params=None, auth=None, cookies=None, hooks=None, json=None)[源代码]

用户创建 Request 对象。

用于准备 PreparedRequest ,发送到服务器。

参数
  • method -- 要使用的HTTP方法。

  • url -- 要发送的URL。

  • headers -- 要发送的标题字典。

  • files -- 文件名:fileobject要多部分上载的文件的字典。

  • data -- 附加到请求的主体。如果字典或元组列表 [(key, value)] 如果提供,将进行表单编码。

  • json -- 用于附加到请求的主体的JSON(如果未指定文件或数据)。

  • params -- 要附加到URL的URL参数。如果字典或元组列表 [(key, value)] 如果提供,将进行表单编码。

  • auth -- 身份验证处理程序或(用户、传递)元组。

  • cookies -- 要附加到此请求的cookie字典或cookiejar。

  • hooks -- 回调挂钩字典,供内部使用。

用法:

>>> import requests
>>> req = requests.Request('GET', 'https://httpbin.org/get')
>>> req.prepare()
<PreparedRequest [GET]>
deregister_hook(event, hook)

注销以前注册的挂钩。如果钩子存在,则返回true,否则返回false。

prepare()[源代码]

构建一个 PreparedRequest 用于传输并返回。

register_hook(event, hook)

正确登记钩子。

class requests.Response[源代码]

这个 Response 对象,其中包含服务器对HTTP请求的响应。

apparent_encoding

由chardet库提供的明显编码。

close()[源代码]

释放回池的连接。一旦调用此方法 raw 不能再次访问对象。

注意:通常不需要显式调用。

content

响应的内容(字节)。

cookies = None

服务器发送回的一罐cookie。

elapsed = None

从发送请求到响应到达所经过的时间量(以时间增量表示)。此属性专门测量从发送请求的第一个字节到完成对头的解析之间所用的时间。因此,它不受使用响应内容或 stream 关键字参数。

encoding = None

访问r.text时要解码的编码。

headers = None

响应头的不区分大小写字典。例如, headers['content-encoding'] 将返回 'Content-Encoding' 响应头。

history = None

列表 Response 请求历史记录中的对象。任何重定向响应都将在此处结束。列表从最早的请求到最新的请求进行排序。

is_permanent_redirect

如果此响应是重定向的永久版本之一,则为true。

is_redirect

如果此响应是一个格式良好的HTTP重定向,并且可能已被自动处理(由 Session.resolve_redirects

iter_content(chunk_size=1, decode_unicode=False)[源代码]

迭代响应数据。当请求上设置了stream=true时,这样可以避免将内容一次读取到内存中以获得较大的响应。块大小是应该读取到内存中的字节数。这不一定是由于解码而返回的每个项目的长度。

区块大小必须是int或none类型。“无”的值将根据 stream. stream=true将在数据到达时读取以接收到的块大小为单位的数据。如果stream=false,则数据作为单个块返回。

如果decode-unicode为true,则将使用基于响应的最佳可用编码对内容进行解码。

iter_lines(chunk_size=512, decode_unicode=False, delimiter=None)[源代码]

迭代响应数据,一次一行。当请求上设置了stream=true时,这样可以避免将内容一次读取到内存中以获得较大的响应。

注解

此方法不可重入安全。

json(**kwargs)[源代码]

返回响应的JSON编码内容(如果有)。

参数

**kwargs -- 可选参数 json.loads 拿。

引发

ValueError -- 如果响应主体不包含有效的JSON。

返回响应的解析头链接(如果有)。

next

返回重定向链中下一个请求的PreparedRequest(如果有)。

ok

返回true status_code 小于400,否则为假。

此属性检查响应的状态代码是否在400和600之间,以查看是否存在客户端错误或服务器错误。如果状态代码介于200和400之间,则返回true。这是 not 检查响应代码是否为 200 OK .

raise_for_status()[源代码]

加仓 HTTPError ,如果发生了。

reason = None

响应HTTP状态的文本原因,例如“未找到”或“确定”。

request = None

这个 PreparedRequest 此为响应的对象。

status_code = None

响应HTTP状态的整数代码,例如404或200。

text

响应的内容(Unicode)。

如果response.encoding为none,则使用 chardet .

响应内容的编码仅基于HTTP头,遵循RFC2616到字母。如果您可以利用非HTTP知识更好地猜测编码,那么应该设置 r.encoding 在访问此属性之前。

url = None

响应的最终URL位置。

下层阶级

class requests.PreparedRequest[源代码]

完全可变的 PreparedRequest 对象,包含将发送到服务器的确切字节。

由以下两者之一生成 Request 对象或手动。

用法:

>>> import requests
>>> req = requests.Request('GET', 'https://httpbin.org/get')
>>> r = req.prepare()
<PreparedRequest [GET]>

>>> s = requests.Session()
>>> s.send(r)
<Response [200]>
body = None

请求正文发送到服务器。

deregister_hook(event, hook)

注销以前注册的挂钩。如果钩子存在,则返回true,否则返回false。

headers = None

HTTP头字典。

hooks = None

回调挂钩字典,供内部使用。

method = None

发送到服务器的HTTP谓词。

path_url

生成要使用的路径URL。

prepare(method=None, url=None, headers=None, files=None, data=None, params=None, auth=None, cookies=None, hooks=None, json=None)[源代码]

使用给定参数准备整个请求。

prepare_auth(auth, url='')[源代码]

准备给定的HTTP身份验证数据。

prepare_body(data, files, json=None)[源代码]

准备给定的HTTP主体数据。

prepare_content_length(body)[源代码]

根据请求方法和主体准备内容长度头

prepare_cookies(cookies)[源代码]

准备给定的HTTP cookie数据。

此函数最终生成 Cookie 使用cookielib的给定cookies的头。由于Cookileib的设计,如果头已经存在,则不会重新生成,这意味着在 PreparedRequest 对象。任何后续呼叫 prepare_cookies 除非事先删除了“cookie”头,否则将没有实际效果。

prepare_headers(headers)[源代码]

准备给定的HTTP头。

prepare_hooks(hooks)[源代码]

准备给定的挂钩。

prepare_method(method)[源代码]

准备给定的HTTP方法。

prepare_url(url, params)[源代码]

准备给定的HTTP URL。

register_hook(event, hook)

正确登记钩子。

url = None

发送请求的HTTP URL。

class requests.adapters.BaseAdapter[源代码]

基本传输适配器

close()[源代码]

清理适配器特定项。

send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)[源代码]

发送PreparedRequest对象。返回响应对象。

参数
  • request -- 这个 PreparedRequest 被送来。

  • stream -- (可选)是否传输请求内容。

  • timeout (float or tuple) -- (可选)在放弃之前等待服务器发送数据的时间(以浮点形式),或 (connect timeout, read timeout) 元组。

  • verify -- (可选)布尔值,在这种情况下,它控制是验证服务器的TLS证书,还是验证字符串,在这种情况下,它必须是要使用的CA束的路径

  • cert -- (可选)任何用户提供的要受信任的SSL证书。

  • proxies -- (可选)要应用于请求的代理字典。

class requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10, max_retries=0, pool_block=False)[源代码]

URLLIB3的内置HTTP适配器。

通过实现传输适配器接口,为与HTTP和HTTPS URL联系的请求会话提供通用事例接口。此类通常由 Session 在封面下分类。

参数
  • pool_connections -- 要缓存的URLLIB3连接池数。

  • pool_maxsize -- 要在池中保存的最大连接数。

  • max_retries -- 每个连接应尝试的最大重试次数。注意,这只适用于失败的DNS查找、套接字连接和连接超时,而不适用于向服务器发送数据的请求。默认情况下,请求不会重试失败的连接。如果您需要对重试请求的条件进行粒度控制,请导入URLLIB3 Retry 然后通过它。

  • pool_block -- 连接池是否应阻止连接。

用法:

>>> import requests
>>> s = requests.Session()
>>> a = requests.adapters.HTTPAdapter(max_retries=3)
>>> s.mount('http://', a)
add_headers(request, **kwargs)[源代码]

添加连接所需的任何头。从2.0版开始,默认情况下不执行任何操作,但由子类 HTTPAdapter .

这不应该从用户代码调用,并且只在子类化 HTTPAdapter .

参数
  • request -- 这个 PreparedRequest 将标题添加到。

  • kwargs -- 调用to send()的关键字参数。

build_response(req, resp)[源代码]

建立一个 Response 来自URLLIB3响应的对象。这不应该从用户代码调用,并且只在子类化 HTTPAdapter

参数
  • req -- 这个 PreparedRequest 用于生成响应。

  • resp -- URLLIB3响应对象。

返回类型

requests.Response

cert_verify(conn, url, verify, cert)[源代码]

验证SSL证书。不应从用户代码调用此方法,并且只在子类化 HTTPAdapter .

参数
  • conn -- 与证书关联的URLLIB3连接对象。

  • url -- 请求的URL。

  • verify -- 布尔值,在这种情况下,它控制我们是验证服务器的TLS证书,还是验证字符串,在这种情况下,它必须是要使用的CA束的路径

  • cert -- 要验证的SSL证书。

close()[源代码]

处理任何内部状态。

目前,这将关闭poolManager和任何活动的proxyManager,从而关闭任何池连接。

get_connection(url, proxies=None)[源代码]

返回给定URL的URLLIB3连接。这不应该从用户代码调用,并且只在子类化 HTTPAdapter .

参数
  • url -- 要连接到的URL。

  • proxies -- (可选)用于此请求的请求样式代理字典。

返回类型

urllib3.ConnectionPool

init_poolmanager(connections, maxsize, block=False, **pool_kwargs)[源代码]

初始化URLLIB3池管理器。

不应从用户代码调用此方法,并且只在子类化 HTTPAdapter .

参数
  • connections -- 要缓存的URLLIB3连接池数。

  • maxsize -- 要在池中保存的最大连接数。

  • block -- 当没有可用连接时阻塞。

  • pool_kwargs -- 用于初始化池管理器的额外关键字参数。

proxy_headers(proxy)[源代码]

返回要添加到通过代理发送的任何请求中的头的字典。这与urllib3 magic一起工作,以确保它们正确地发送到代理,而不是在使用connect的情况下发送到隧道请求中。

这不应该从用户代码调用,并且只在子类化 HTTPAdapter .

参数

proxy -- 用于此请求的代理的URL。

返回类型

dict

proxy_manager_for(proxy, **proxy_kwargs)[源代码]

返回给定代理的URLLIB3代理管理器。

不应从用户代码调用此方法,并且只在子类化 HTTPAdapter .

参数
  • proxy -- 要为其返回URLLIB3代理管理器的代理。

  • proxy_kwargs -- 用于配置代理管理器的额外关键字参数。

返回

ProxyManager

返回类型

urllib3.ProxyManager

request_url(request, proxies)[源代码]

获取发出最终请求时要使用的URL。

如果消息是通过HTTP代理发送的,则必须使用完整的URL。否则,我们应该只使用URL的路径部分。

这不应该从用户代码调用,并且只在子类化 HTTPAdapter .

参数
  • request -- 这个 PreparedRequest 被送来。

  • proxies -- 方案或方案以及代理URL的主机的字典。

返回类型

str

send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)[源代码]

发送PreparedRequest对象。返回响应对象。

参数
  • request -- 这个 PreparedRequest 被送来。

  • stream -- (可选)是否传输请求内容。

  • timeout (float or tuple or urllib3 Timeout object) -- (可选)在放弃之前等待服务器发送数据的时间(以浮点形式),或 (connect timeout, read timeout) 元组。

  • verify -- (可选)布尔值,在这种情况下,它控制是验证服务器的TLS证书,还是验证字符串,在这种情况下,它必须是要使用的CA束的路径

  • cert -- (可选)任何用户提供的要受信任的SSL证书。

  • proxies -- (可选)要应用于请求的代理字典。

返回类型

requests.Response

认证

class requests.auth.AuthBase[源代码]

所有身份验证实现派生自的基类

class requests.auth.HTTPBasicAuth(username, password)[源代码]

将HTTP基本身份验证附加到给定的请求对象。

class requests.auth.HTTPProxyAuth(username, password)[源代码]

将HTTP代理身份验证附加到给定的请求对象。

class requests.auth.HTTPDigestAuth(username, password)[源代码]

将HTTP摘要身份验证附加到给定的请求对象。

编码

requests.utils.get_encodings_from_content(content)[源代码]

返回给定内容字符串的编码。

参数

content -- 从中提取编码。

requests.utils.get_encoding_from_headers(headers)[源代码]

返回给定HTTP头dict的编码。

参数

headers -- 要从中提取编码的字典。

返回类型

str

requests.utils.get_unicode_from_response(r)[源代码]

以Unicode返回请求的内容。

参数

r -- 从中获取Unicode内容的响应对象。

尝试:

  1. 内容类型的字符集

  2. 回退并替换所有Unicode字符

返回类型

str

Cookies

requests.utils.dict_from_cookiejar(cj)[源代码]

从cookiejar返回键/值字典。

参数

cj -- 要从中提取cookies的cookiejar对象。

返回类型

dict

requests.utils.add_dict_to_cookiejar(cj, cookie_dict)[源代码]

从键/值字典返回cookiejar。

参数
  • cj -- 将饼干插入的烹饪罐。

  • cookie_dict -- 要插入cookiejar的键/值的dict。

返回类型

CookieJar

requests.cookies.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)[源代码]

从键/值字典返回cookiejar。

参数
  • cookie_dict -- 要插入cookiejar的键/值的dict。

  • cookiejar -- (可选)一个用于添加cookies的烹饪罐。

  • overwrite -- (可选)如果为false,则不会用新的cookie替换jar中已经存在的cookie。

返回类型

CookieJar

class requests.cookies.RequestsCookieJar(policy=None)[源代码]

兼容性类;是cookielib.cookiejar,但公开了dict接口。

这是我们默认为未指定请求和会话创建的cookiejar,因为有些客户端可能希望response.cookies和session.cookies支持dict操作。

请求不在内部使用dict接口;它只是为了与外部客户机代码兼容。所有请求代码都应该与外部提供的 CookieJar ,例如 LWPCookieJarFileCookieJar .

不像普通的烹饪罐,这个类是可腌制的。

警告

通常为O(1)的字典操作可以是O(n)。

向请求添加正确的cookie:header(urllib.request.request对象)。

除非policy.hide_cookie2为真,否则还会添加cookie2头。

clear(domain=None, path=None, name=None)

清除一些饼干。

不带参数调用此方法将清除所有cookie。如果给定一个参数,则只删除属于该域的cookie。如果给定两个参数,则将删除属于该域中指定路径的cookie。如果给定三个参数,那么将删除具有指定名称、路径和域的cookie。

如果不存在匹配的cookie,则引发keyError。

clear_expired_cookies()

丢弃所有过期的cookie。

您可能不需要调用此方法:过期的cookie永远不会发送回服务器(前提是您使用的是defaultcookiepolicy),cookiejar本身经常调用此方法,并且.save()方法无论如何也不会保存过期的cookie(除非您通过传递一个真正的ignore_expires参数来询问)。

clear_session_cookies()

放弃所有会话cookie。

请注意,.save()方法不会保存会话cookie,除非通过传递一个真正的ignore_discard参数来询问其他问题。

copy()[源代码]

返回此requestscookiejar的副本。

extract_cookies(response, request)

在允许的情况下,从响应中提取cookie。

get(name, default=None, domain=None, path=None)[源代码]

dict-like get()还支持可选的域和路径参数,以解决在多个域上使用一个cookie jar时的命名冲突。

警告

操作是O(N),而不是O(1)。

get_dict(domain=None, path=None)[源代码]

将可选的域和路径作为参数,并返回一个简单的旧python dict,其中包含满足要求的名称-值对cookie。

返回类型

dict

get_policy()[源代码]

返回使用的cookiepolicy实例。

items()[源代码]

dict-like items(),从jar返回名称值元组列表。允许客户端代码调用 dict(RequestsCookieJar) 得到一个普通的键值对python dict。

参见

键()和值()。

iteritems()[源代码]

dict-like iteritems(),从jar返回名称值元组的迭代器。

参见

iterkeys()和itervalues()。

iterkeys()[源代码]

dict-like iterkeys(),返回jar中cookie名称的迭代器。

参见

itervalues()和iteritems()。

itervalues()[源代码]

dict-like itervalues(),从jar返回cookie值的迭代器。

参见

iterkeys()和iteritems()。

keys()[源代码]

dict-like keys(),返回jar中cookie的名称列表。

参见

values()和items()。

list_domains()[源代码]

实用程序方法列出JAR中的所有域。

list_paths()[源代码]

实用程序方法列出JAR中的所有路径。

make_cookies(response, request)

返回从响应对象提取的cookie对象的序列。

multiple_domains()[源代码]

如果jar中有多个域,则返回true。否则返回false。

返回类型

bool

pop(k[, d]) → v, remove specified key and return the corresponding value.

如果找不到键,则返回d(如果给定),否则将引发keyError。

popitem() → (k, v), remove and return some (key, value) pair

作为2元组;但如果d为空,则引发keyror。

set(name, value, **kwargs)[源代码]

dict-like set()还支持可选的域和路径参数,以解决在多个域上使用一个cookie jar时的命名冲突。

设置一个cookie,而不检查是否应该设置它。

如果政策规定可以,设置一个cookie。

setdefault(k[, d]) → D.get(k,d), also set D[k]=d if k not in D
update(other)[源代码]

用另一个烹饪罐或类似dict的cookies更新这个罐子

values()[源代码]

dict-like values(),返回JAR中cookie的值列表。

参见

键()和项()。

class requests.cookies.CookieConflictError[源代码]

有两个cookie符合cookie jar中指定的条件。使用.get和.set并包含域和路径参数,以便更具体。

with_traceback()

例外情况。使用_traceback(tb)——设置self.u traceback_uuu至tb并返回self。

状态代码查找

requests.codes

这个 codes 对象定义从HTTP状态的公用名到其数字代码的映射,可以作为属性或字典项进行访问。

>>> requests.codes['temporary_redirect']
307
>>> requests.codes.teapot
418
>>> requests.codes['\o/']
200

有些代码有多个名称,允许使用名称的大小写版本。例如, codes.okcodes.OKcodes.okay 所有这些都对应于HTTP状态代码200。

  • 100: continue

  • 101: switching_protocols

  • 102: processing

  • 103: checkpoint

  • 122: uri_too_longrequest_uri_too_long

  • 200: okokayall_okall_okayall_good\o/

  • 201: created

  • 202: accepted

  • 203: non_authoritative_infonon_authoritative_information

  • 204: no_content

  • 205: reset_contentreset

  • 206: partial_contentpartial

  • 207: multi_statusmultiple_statusmulti_statimultiple_stati

  • 208: already_reported

  • 226: im_used

  • 300: multiple_choices

  • 301: moved_permanentlymoved\o-

  • 302: found

  • 303: see_otherother

  • 304: not_modified

  • 305: use_proxy

  • 306: switch_proxy

  • 307: temporary_redirecttemporary_movedtemporary

  • 308: permanent_redirectresume_incompleteresume

  • 400: bad_requestbad

  • 401: unauthorized

  • 402: payment_requiredpayment

  • 403: forbidden

  • 404: not_found-o-

  • 405: method_not_allowednot_allowed

  • 406: not_acceptable

  • 407: proxy_authentication_requiredproxy_authproxy_authentication

  • 408: request_timeouttimeout

  • 409: conflict

  • 410: gone

  • 411: length_required

  • 412: precondition_failedprecondition

  • 413: request_entity_too_large

  • 414: request_uri_too_large

  • 415: unsupported_media_typeunsupported_mediamedia_type

  • 416: requested_range_not_satisfiablerequested_rangerange_not_satisfiable

  • 417: expectation_failed

  • 418: im_a_teapotteapoti_am_a_teapot

  • 421: misdirected_request

  • 422: unprocessable_entityunprocessable

  • 423: locked

  • 424: failed_dependencydependency

  • 425: unordered_collectionunordered

  • 426: upgrade_requiredupgrade

  • 428: precondition_requiredprecondition

  • 429: too_many_requeststoo_many

  • 431: header_fields_too_largefields_too_large

  • 444: no_responsenone

  • 449: retry_withretry

  • 450: blocked_by_windows_parental_controlsparental_controls

  • 451: unavailable_for_legal_reasonslegal_reasons

  • 499: client_closed_request

  • 500: internal_server_errorserver_error/o\

  • 501: not_implemented

  • 502: bad_gateway

  • 503: service_unavailableunavailable

  • 504: gateway_timeout

  • 505: http_version_not_supportedhttp_version

  • 506: variant_also_negotiates

  • 507: insufficient_storage

  • 509: bandwidth_limit_exceededbandwidth

  • 510: not_extended

  • 511: network_authentication_requirednetwork_authnetwork_authentication

迁移到1.x

本节详细介绍0.x和1.x之间的主要区别,旨在减轻升级的痛苦。

API更改

  • Response.json 现在是可调用的,而不是响应的属性。

    import requests
    r = requests.get('https://github.com/timeline.json')
    r.json()   # This *call* raises an exception if JSON decoding fails
    
  • 这个 Session API已更改。会话对象不再接受参数。 Session 现在也是大写的,但仍然可以用小写字母实例化 session 为了向后兼容。

    s = requests.Session()    # formerly, session took parameters
    s.auth = auth
    s.headers.update(headers)
    r = s.get('https://httpbin.org/headers')
    
  • 除“response”外,所有请求挂钩都已删除。

  • 身份验证助手已被分成单独的模块。请参阅requests-oauthlib_u和requests-kerberos_u。

  • 流请求的参数已从更改为 prefetchstream 逻辑被颠倒了。此外, stream 现在需要原始响应读取。

    # in 0.x, passing prefetch=False would accomplish the same thing
    r = requests.get('https://github.com/timeline.json', stream=True)
    for chunk in r.iter_content(8192):
        ...
    
  • 这个 config 请求方法的参数已被删除。其中一些选项现在配置在 Session 例如保持活动状态和最大重定向数。应通过配置日志记录来处理详细性选项。

    import requests
    import logging
    
    # Enabling debugging at http.client level (requests->urllib3->http.client)
    # you will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA.
    # the only thing missing will be the response.body which is not logged.
    try: # for Python 3
        from http.client import HTTPConnection
    except ImportError:
        from httplib import HTTPConnection
    HTTPConnection.debuglevel = 1
    
    logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests
    logging.getLogger().setLevel(logging.DEBUG)
    requests_log = logging.getLogger("urllib3")
    requests_log.setLevel(logging.DEBUG)
    requests_log.propagate = True
    
    requests.get('https://httpbin.org/headers')
    

许可

与API无关的一个关键区别是许可证从isc_u许可证更改为 Apache 2.0 许可证。Apache2.0许可证确保对请求的贡献也包含在Apache2.0许可证中。

迁移到2.x

与1.0版本相比,向后不兼容的更改相对较少,但是对于这个主要版本仍然有一些问题需要注意。

有关此版本中更改的更多详细信息,包括新的API、指向相关GitHub问题的链接以及一些错误修复,请阅读Cory关于此主题的博客。

API更改

  • 请求处理异常的方式发生了一些变化。 RequestException 现在是的子类 IOError 而不是 RuntimeError 因为这样更准确地分类了错误的类型。此外,一个无效的URL转义序列现在引发了 RequestException 而不是 ValueError .

    requests.get('http://%zz/')   # raises requests.exceptions.InvalidURL
    

    最后, httplib.IncompleteRead 错误的分块编码导致的异常现在将引发一个请求 ChunkedEncodingError 相反。

  • 代理API略有变化。代理URL的方案现在是必需的。

    proxies = {
      "http": "10.10.1.10:3128",    # use http://10.10.1.10:3128 instead
    }
    
    # In requests 1.x, this was legal, in requests 2.x,
    #  this raises requests.exceptions.MissingSchema
    requests.get("http://example.org", proxies=proxies)
    

行为改变

  • 键在 headers 字典现在是所有python版本的本机字符串,即python 2上的bytestrings和python 3上的unicode。如果键不是本机字符串(python 2上的unicode或python 3上的bytestrings),它们将转换为采用utf-8编码的本机字符串类型。

  • 价值观 headers 字典应该始终是字符串。自1.0之前,这就是项目的立场,但最近的一次更改(自2.11.0版本以来)更严格地实施了这一点。建议尽可能避免以unicode形式传递头值。