requests库/urllib3库返回WEB响应内容的处理差异

requests库是一个广泛使用的HTTP库,用于发送HTTP请求和处理响应。
以下是requests库中一些主要类和方法的详细介绍:
requests库主要类和方法
类:
requests.models.Response:
status_code: 响应状态码。
text: 以Unicode形式返回响应内容。
content: 以字节形式返回响应内容。

headers: 响应头信息。
json(): 将响应内容解析为JSON格式。
方法:
requests.request(method, url, **kwargs):发送HTTP请求,并返回Response对象。可以指定请求方法、URL,以及其他参数。
requests.get(url, params=None, **kwargs):发送GET请求,并返回Response对象。可以指定URL、查询参数等。
requests.post(url, data=None, json=None, **kwargs):发送POST请求,并返回Response对象。可以指定URL、表单数据、JSON数据等。
requests.put(url, data=None, **kwargs):发送PUT请求,并返回Response对象。
requests.delete(url, **kwargs):发送DELETE请求,并返回Response对象。
requests.head(url, **kwargs):发送HEAD请求,并返回Response对象。
requests.options(url, **kwargs):发送OPTIONS请求,并返回Response对象。
requests.Session():创建一个会话对象,可以跨多个请求保持会话状态,共享Cookie等信息。
requests.exceptions.RequestException:所有requests库的异常的基类。

requests库中,Response对象的content属性字节形式返回响应内容。这个属性返回的是原始的字节数据,通常用于处理非文本内容(如图片、视频等)的响应。 
requests库中,Response对象的text属性Unicode形式返回响应内容,以便进行文本处理和解析。

import requests

# 发送GET请求
response = requests.get('https://www.example.***')

# 获取响应内容的Unicode形式
response_text = response.text

# 打印响应内容的前100个字符
print(response_text)

---------------------------------------
urllib3库提供了许多类和方法,用于发送HTTP请求、管理连接池、处理代理、证书验证等功能。
以下是urllib3库中最常用的类及其方法的简要介绍:
urllib3.PoolManager类
request(method, url, fields=None, **urlopen_kw):发送HTTP请求并返回HTTPResponse对象。可以指定请求方法、URL,以及其他参数。
urlopen(method, url, body=None, headers=None, retries=3, redirect=True, assert_same_host=True, timeout=Timeout.DEFAULT_TIMEOUT, pool_timeout=None, release_conn=None, chunked=False, body_pos=0, fields=None, preload_content=True, decode_content=True, retries=Retry.DEFAULT, **response_kw):发送HTTP请求并返回HTTPResponse对象。与request方法类似,但提供更多的参数选项。

urllib3.HTTPResponse类
status:获取响应状态码。
data:获取响应的原始字节流数据response.data.decode('utf-8') # 将原始字节流解码为字符串
headers:获取响应头信息。
连接管理
urllib3.connection_from_url(url, **kw):根据URL创建一个连接对象。
urllib3.make_headers(**headers):创建HTTP请求头。
urllib3.disable_warnings(category=InsecureRequestWarning):禁用特定的警告类别。
异常类
urllib3.exceptions.MaxRetryError:超过最大重试次数时引发的异常。
urllib3.exceptions.SSLError:SSL证书验证失败时引发的异常。

import urllib3

# 创建一个PoolManager对象
http = urllib3.PoolManager()

# 发送GET请求并获取响应对象
response = http.request('GET', 'https://www.example.***')

# 检查响应状态码
if response.status == 200:
    # 读取并打印网页内容
    html_content = response.data.decode('utf-8')
    print(html_content)
else:
    print("Failed to fetch the webpage. Status code:", response.status)

 在urllib3中,使用data属性来获取响应的原始字节流数据。可以将这些数据解码为字符串,如UTF-8编码,以获取文本内容。

import urllib3
import json

http = urllib3.PoolManager()

data = {'attribute': 'value'}
encoded_data = json.dumps(data).encode('utf-8')

response = http.request(
    'POST',
    'http://httpbin.org/post',
    body=encoded_data,
    headers={'Content-Type': 'application/json'}
)

print(response.status)
print(response.data.decode('utf-8'))

转载请说明出处内容投诉
CSS教程_站长资源网 » requests库/urllib3库返回WEB响应内容的处理差异

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买