python urllib和urllib3知识点总结

1. urllib库介绍

urllib是Python内置的HTTP请求库,提供了大量方法用于发送HTTP请求、处理Cookie、处理URL编码等。

1.1 发送GET请求

通过urllib可以很方便地发送GET请求。我们可以使用urllib.request模块下的urlopen()函数来实现:

import urllib.request

response = urllib.request.urlopen('https://www.example.com')

print(response.read().decode('utf-8'))

在以上代码中,我们使用urlopen()函数发送了一个GET请求,并打印了返回的响应内容。首先,我们需要导入urllib.request模块。然后,使用urlopen()函数发送请求,传入一个URL作为参数。最后,我们使用read()方法读取响应的内容,并使用decode()方法将其解码为字符串。

1.2 发送POST请求

与发送GET请求类似,我们可以使用urllib.request模块下的urlopen()函数来发送POST请求。不同的是,我们需要在请求的时候附带数据:

import urllib.request

import urllib.parse

data = urllib.parse.urlencode({'param1': 'value1', 'param2': 'value2'}).encode('utf-8')

response = urllib.request.urlopen('https://www.example.com', data=data)

print(response.read().decode('utf-8'))

在以上代码中,我们首先使用urllib.parse模块的urlencode()函数将参数转为URL编码的形式,并使用encode()方法将其编码为字节流。然后,我们在发送请求时,将编码后的参数传给data参数。最后,我们同样使用read()和decode()方法处理响应的内容。

2. urllib3库介绍

urllib3是一个功能强大的HTTP请求库,它建立在urllib之上,提供了更高级、更简单的API。

2.1 发送GET请求

与urllib类似,我们可以使用urllib3的PoolManager类来发送GET请求:

import urllib3

http = urllib3.PoolManager()

response = http.request('GET', 'https://www.example.com')

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

在以上代码中,我们首先导入urllib3库,并创建了一个PoolManager对象。然后,使用request()方法发送GET请求,传入方法参数和URL。最后,我们同样使用decode()方法处理响应的内容。

2.2 发送POST请求

urllib3库同样支持发送POST请求,我们可以通过urllib3的PoolManager对象实现:

import urllib3

http = urllib3.PoolManager()

data = {'param1': 'value1', 'param2': 'value2'}

response = http.request('POST', 'https://www.example.com', fields=data)

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

在以上代码中,我们同样使用request()方法发送POST请求,传入方法参数、URL以及要附加的数据。数据可以通过fields参数传入,这里我们将数据存储在一个字典中,并传给fields参数。最后,同样处理响应的内容。

3. 总结

本篇文章介绍了Python中的urllib和urllib3库,分别用于发送HTTP请求。我们学习了如何发送GET请求和POST请求,并通过示例代码演示了具体的用法。

需要注意的是,在使用urllib或urllib3的时候,我们还需要注意处理请求的返回结果。我们可以通过响应对象的status属性获取返回的状态码,通过headers属性获取返回的头部信息。

通过掌握urllib和urllib3的基本用法,我们可以在Python中方便地发送HTTP请求,实现各种功能,如爬取网页内容、访问API接口等。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签