Python的网络请求
本节将介绍在 Python 中实现 HTTP 网络请求常见的三种方式:urllib、urllib3 以及 requests。本节将介绍在 Python 中实现 HTTP 网络请求常见的三种方式:urllib、urllib3 以及 requests。
1、 urllib 模块
urllib 是 python 自带模块,该模块中提供了一个 urlopen() 方法,通过该方法指定 URL 发送网络请求来获取数据。urllib 提供了多个子模块,具体的模块名称与含义如下所示:
urllib.request #该模块定义了打开URI(主要是 HTTP)的方法和类,例如,身份验证、重定向、cookie 等等 urllib.error #该模块中主要包含异常类,基本的异常类是 URLError urllib.parse #该模块定义的功能分为两大类:URL 解析和 URL 引用 urllib.robotparser #该模块用于解析 robots.txt 文件
通过 urllib.request 模块实现发送请求并读取网页内容的简单示例如下:
import urllib.request #导入模块 response = urllib.request.urlopen("http://www.baidu.com") #打开指定需要爬取的网页 html = response.read() #读取网页代码 print(html) #打印读取内容
上面的示例中,是通过 get 请求方式获取百度的网页内容。下面通过使用 urllib.request 模块的 post 请求实现获取网页信息的内容,示例如下:
import urllib.parse import urllib.request # 将数据使用urlencode编码处理后,再使用encoding设置为utf-8编码 data = bytes(urllib.parse.urlencode({'word': 'hello'}),encoding='utf8') response = urllib.request.urlopen("http://www.baidu.com/post",data=data) #打开指定需要爬取的网页 html = response.read() #读取网页代码 print(html) #打印读取内容
2、Urllib3模块
在使用 Urllib3 模块前,需要在Python中通过 pip install urllib3 代码进行模块的安装。
Urllib3 是一个功能强大,条理清晰,用于 HTTP 客户端的 Python 库,许多 Python 的原生系统已经开始使用 Urllib3。 Urllib3 提供了很多 Python 标准库里所没有的重要特性:
1.线程安全。
2.连接池
3.客户端 SSL / TLS 验证。
4.使用大部分编码上传文件。
5.Helpers 用于重试请求并处理 HTTP 重定向。
6.支持 gzip 和 deflate 编码。
7.支持 HTTP 和 SOCKS 代理。
8.100%的测试覆盖率
通过 Urllib3 模块实现发送网络请求的示例代码如下:
import urllib3 #创建Poo1Manager对象,用于处理与线程池的连接以及线程安全的所有细节 http = urllib3.PoolManager() # 对需要爬取的网页发送请求 response = http.request('GET','https://www.baidu.com/') print(response.data) #打印读取内容
post 请求实现获取网页信息的内容,关键代码如下:
本文未完全显示,开通会员查看全文......