Requests 模块中文文档(四)

版权声明:转载请标明出处 https://blog.csdn.net/qq_41556318/article/details/86532048

原文链接 -> 传送门

The API Documentation / Guide(2)

目录

The API Documentation / Guide(2)

四、低级别的类

五、更低级别的类


四、低级别的类

1、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 对象(requests.PreparedRequest 见 更低级别的类 章节)。【源代码

参数

含义

method 指定 HTTP 使用的方法
url 指定 URL
headers 指定 HTTP 头部内容,是以字典(Dict)的形式
files 以字典的形式 {filename: fileobject} 上传多部分编码文件
data 指定附加到请求上的 body 内容,如果提供的是字典,则将进行表单编码
json 指定附加到请求上的 body 内容,是以 JSON 格式的形式
params 指定附加到 URL 上的查询字符串,是以字典(Dict)的形式
cookies 指定附加到请求上的 cookies 内容,可以是字典(Dict)或者 CookieJar 对象
hooks 指定供内部使用的回调钩子,是以字典(Dict)的形式

用法:

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

deregister_hook(event, hook)

注销以前注册的钩子。

如果钩子存在返回 True,否则返回 False。

prepare()

构建一个用于传输的 PreparedRequest 对象(requests.PreparedRequest 见 更低级别的类 章节)并返回。【源代码

register_hook(event, hook)

注册一个钩子。

2、class requests.Response

Response 对象包含服务器对 HTTP 请求的响应内容。【源代码

apparent_encoding

当前的编码,由 chardet 库提供编码检测技术(参见 -> 一次性解决你所有的编码检测问题)。

close()

将连接释放回池中。一个该方法被调用,就不能再次访问底层的 raw 对象了。【源代码

注意:该方法通常不需要显式地去调用它。

content

响应的内容,是以字节的形式存放。

cookies = None

一个 CookieJar 对象,存放服务器发回的 Cookies。

elapsed = None

从发送请求开始到响应抵达的时间量。这个属性用于测量从发送请求的第一个字节到完成解析 HTTP 头之间的时间。因此,不受响应内容或 stream 关键字参数的值影响。

encoding = None

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

headers = None

以字典的形式存放响应头(不区分大小写)。

例如,headers['content-encoding'] 将返回一个 'Content-Encoding' 响应头。

history = None

一个存放 Request 历史中的 Response 对象,任何重定向响应都将会记录在这里。

这个列表按照访问时间从旧到新进行排序。

is_permanent_redirect

如果 Response 是一个永久重定向,该值为 True。

is_redirect

如果 Response 是一个正确的 HTTP 重定向,可以自动处理(通过 Sesson.resolve_redirects,见 会话 章节)。

iter_content(chunk_size=1, decode_unicode=False)

遍历响应的数据。【源代码

当请求设置为 stream=True 时,这个方法可以避免一次性读取大量的响应内容。

chunk_size 参数指定了每次读入内存的字节数,这个值不一定是在解码时返回的每个项目长度。

chunk_size 必须是 int 或 None 类型。如果是 None,则根据 stream 的值拥有不同的功能:如果 stream=True,无论接收到的块大小如何,都会读取数据;如果 stream=False,数据会作为一个单一的块返回。

如果 decode_unicode 是 True,将根据响应的最佳可用编码对内容进行解码。

iter_lines(chunk_size=512, decode_unicode=None, delimiter=None)

遍历响应的数据,每次遍历一行数据。【源代码

当请求设置为 stream=True 时,这个方法可以避免一次性读取大量的响应内容。

注意:这个方法不是安全的可重入方法。

json(**kwargs)

如果存在的话,返回 json 编码的响应内容【源代码】。

参数:**kwargs -- 可选参数,用于 json.loads。

异常:ValueError -- 如果响应体没有包含合法的 json 格式数据,则抛出该异常。

links

如果存在的话,返回响应的解析标题链接。

next

如果存在的话,返回重定向链中下一个请求的 PreparedRequest 对象。

ok

如果 status_code 的值小于 400,返回 True。

该属性检测响应的状态码是否在 400 到 600 之间,以查看是否存在客户端错误或服务端错误。

如果状态码在 200 到 400 之间,会返回 True。

这个属性并不是检测响应状态码是否等于 200。

raise_for_status()

如果存在,则抛出 HTTPError 异常(requests.HTTPError,查看 异常 章节)。【源代码

raw = None

表示响应的文件对象(高阶用法),使用 raw 需要在请求时设置 stream=True。

reason = None

响应的 HTTP 状态码对应的原因。比如 "Not Found" 或 "OK"。

request = None

对应该响应的 PreparedRequest 对象(requests.PreparedRequest,见 更低级别的类 章节)。

status_code = None

响应的 HTTP 状态码。比如 404 或 200。

text

响应的内容,以 unicode 的形式。

如果 Response.encoding 是 None,那么将使用 chardet 库来检测编码(参见 -> 一次性解决你所有的编码检测问题)。

响应内容的编码仅基于 HTTP 报头决定,遵循 RFC 2616 规范。如果你可以利用非 HTTP 的知识更好地猜测出编码,那么应该在访问该属性之前设置 r.encoding 的值。

url = None

Response 最终的 URL 地址。


五、更低级别的类

1、class requests.PreparedRequest

PreparedRequest 对象是一个完全可变对象,包含将要发送给服务器的确切数据【源代码】。

PreparedRequest 对象可以由 Request 对象(requests.Request,见 低级别的类 章节)生成,也可以手动生成。

用法:

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

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

body = None

指定发送给服务器的请求体(request body)。

deregister_hook(event, hook)

注销以前注册的钩子。

如果钩子存在返回 True,否则返回 False。

headers = None

指定 HTTP 头部,是以字典(dict)的形式。

hooks = None

指定供内部使用的回调钩子,是以字典(Dict)的形式。

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)

准备基于请求方法和数据体的 Content-Length 头。【源代码

prepare_cookies(cookies)

准备 HTTP 的 cookie 数据。【源代码

这个方法最后使用 cookielib 从给定的 cookies 中生成一个 Cookie 头。由于 cookielib 的设计缘故,如果 Cookie 头本身已经存在,则不会重新生成,这就意味着该方法在 PreparedRequest 对象的整个生命过程中只能调用一次,随后再次调用该方法将没有任何实际效果,除非 Cookie 头事先被去除。

prepare_headers(headers)

准备 HTTP 头。【源代码

prepare_hooks(hooks)

准备钩子。【源代码

prepare_method(method)

准备 HTTP 方法。【源代码

prepare_url(url, params)

准备 HTTP URL。【源代码

register_hook(event, hook)

正确地注册一个钩子。

url = None

指定请求发送的目的地 URL。

2、class requests.adapters.BaseAdapter

基本传输适配器。【源代码

close()

清理适配器特定项目。【源代码

send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)

发送 PreparedRequest 对象。返回 Response 对象。【源代码

参数

含义

request 指定发送的 PreparedRequest 对象
stream(可选) 是否使用流传输请求的内容
timeout(可选) 指定等待服务器发送数据的超时时间;可以是一个浮点数,也可以是一个元组(连接超时,读取超时)
verify(可选) 如果是一个布尔类型的值,表示是否验证服务器的 TLS 证书;如果是一个字符串,表示要使用的 CA 证书的路径
cert(可选) 指定由用户提供的可信 SSL 证书
proxies(可选) 指定请求使用的代理,是以字典(dict)的形式

3、class requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10, max_retries=0, pool_block=False)

urllib3 内置的 HTTP 适配器。【源代码

通过实现传输适配器接口,为 Requests 会话提供一个通用的接口来联系 HTTP 和 HTTPS URL。这个类通常由封面下面的 Session 类(requests.Session,见 会话 章节)创建。

参数

含义

pool_connections 指定 urllib3 连接池的缓存数量
pool_maxsize 指定连接池中最多可以保存的连接数目
max_retries 指定每个连接最多可以尝试多少次

请注意:这仅适用于 DNS 查询失败,套接字连接和连接超时,不会从服务器上请求数据。默认情况下,Requests 不会重新尝试失败的连接。如果你需要重新尝试一个请求,可以导入 urllib3 的 Retry 类代替。
pool_block 指定连接池是否应该阻塞连接

用法:

>>> import requests
>>> s = requests.Session()
>>> a = requests.adapters.HTTPAdapter(max_retries=3)
>>> s.mount('http://', a)

add_headers(request, **kwargs)

添加任何连接需要的 header 信息。【源代码

从 v2.0 开始,默认情况下不执行任何操作,但仍然被覆盖在 HTTPAdapter 子类化的用户中。

这个方法不应该从用户代码中调用,并且只有在对 HTTPAdapter 进行子类化时才被使用。

参数

含义

request 指定要添加 header 信息的 PreparedRequest 对象
kwargs 指定来自 call() 方法的关键字参数

build_response(req, resp)

从 urllib3 响应中构建一个 Response 对象。【源代码

这个方法不应该从用户代码中调用,并且只有在对 HTTPAdapter 进行子类化时才被使用。

参数

含义

req 指定用于生成响应的 PreparedRequest 对象
resp 指定 urllib3 的响应对象

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[/tr]
proxies(可选) 该请求使用的代理,是以 Requests 的字典(dict)形式。

init_poolmanager(connections, maxsize, block=False, **pool_kwargs)

初始化一个 urllib3 PoolManager。【源代码

这个方法不应该从用户代码中调用,并且只有在对 HTTPAdapter 进行子类化时才被使用。

参数

含义

connections 指定 urllib3 连接池的缓存数量
maxsize 指定连接池中最多可能存放的连接数
block 当没有空闲的可用连接时是否阻断
pool_kwargs 其它用于内存池管理(Pool Manager)的关键字参数

proxy_headers(proxy)

返回一个字典(dict),包含所有通过代理发送的请求的头部。【源代码

这可以与 urllib3 一起使用,以确保它们被正确地发送到代理,而不是正在使用的 CONNECT 隧道请求。

这个方法不应该从用户代码中调用,并且只有在对 HTTPAdapter 进行子类化时才被使用。

参数

含义

proxies 指定该请求的 url 所使用的代理

proxy_manager_for(proxy, **proxy_kwargs)

返回代理的 urllib3 ProxyManager。【源代码

这个方法不应该从用户代码中调用,并且只有在对 HTTPAdapter 进行子类化时才被使用。

参数

含义

proxy 指定返回 urllib3 ProxyManager 的代理
proxy_kwargs 其它用于代理管理(Proxy Manager)的关键字参数

request_url(request, proxies)

获取最后的请求中所使用的 url。【源代码

如果消息是通过 HTTP 代理发送的,所使用的就是完整的 URL;否则,我们只需要使用局部 URL 即可。

这个方法不应该从用户代码中调用,并且只有在对 HTTPAdapter 进行子类化时才被使用。

参数

含义

request 指定发送的 PreparedRequest 对象
proxies 以字典(dict)的形式存协议或代理 URLs 的主机和协议

send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)

发送 PreparedRequest 对象,返回 Response 对象。【源代码

参数

含义

request 指定发送的 PreparedRequest 对象
stream(可选) 指定是否以流的形式进行请求连接
timeout(可选) 指定等待服务器响应的超时时间如果是元组 (t1, t2),那么 t1 表示连接超时,t2 表示读取超时
可以是浮点型、元组或 urllib3 的 Timeout 对象
verify(可选) 可以是一个布尔类型的值,表示是否验证服务器的 TLS 证书;也可以是一个字符串,包含一个 CA 证书的路径
cert(可选) 指定由用户提供的可信 SSL 证书
proxies(可选) 指定请求应用的代理,是以字典(dict)的形式

猜你喜欢

转载自blog.csdn.net/qq_41556318/article/details/86532048