小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
复习回顾
我们都知道使用 Python 进行网络编程之前,我们要经常如下步骤:
本期,我们将学习比 Python 内置的urllib模块功能更强大的urllib3模块相关方法的学习,let's go ~
1. urllib3 模块概述
什么是 urllib3 模块?
urllib3 是专门用于HTTP客户端的第三方Python库,Urllib3 提供比Python原生库更多网络操作
我们可以在PyPI网站可以看到Urllib3提供的8种特性
- Thread safety 线程安全
- Connection pooling 连接池
- Client-side SSL/TLS verification 客户端SSL/TLS验证
- File uploads with multipart encoding 文件分布编码上传
- Helper for retrying requests and dealing with HTTP redirects 协助处理重复请求和HTTP重定位
- Support for gzip,deflate,and brotli encoding 支持压缩编码
- Proxy support for HTTP and SOCKS 支持HTTP和Sock代理
- 100% test coverage 100%测试覆盖
在 urllib3 用户手册中可以详细看到urllib3用法介绍
urllib3 安装方法
方式一:在命令行窗口输入
pip install urllib3
复制代码
方式二:使用git clone
git://github.com/urllib3/urllib3.git
python setup.py install
复制代码
urllib3 使用方法
我们在代码中同样需要import进行导入
import urllib3
复制代码
2. urllib3 相关方法
我们urllib3用户手册上可知常见的方法有如下:
方法 | 作用 |
---|---|
urllib3.PoolManager.request(req,url,[headers,field]..) | 创建PoolManager实例通过request来发送一个HTTP请求,并返回HTTPresponse对象 |
🚩urllib3.PoolManager.reques()相关字段说明
参数 | 作用 |
---|---|
req | 请求方法,常见有POST、GET |
header | 请求header参数 |
fields | 查询参数,可以用于GET、HEAD、DELETE请求以及表单数据PUT和POST请求 |
body | Josn格式数据 |
timeout | 设置超时时间,可以是具体的时间或者urllib3.Timeout(connect,read)实例对象 |
retries | 重试请求,可以指定整数,当设置为False则禁用重定向和重试请求。若没有指定,默认情况会执行3次重试和3次重定向 |
redirect | 设置为False时,则禁用重定向但保留重试逻辑 |
🚩HTTPresponse对象提供的相关属性
属性 | 作用 |
---|---|
status | 返回HTTP状态码如200成功,500服务器异常,403客户端数据异常 |
data | 返回HTTPresponse的信息(JOSN、二进制) |
header | 返回HTTP请求的header信息 |
auto_close | 管理io_TextIOWrapper接口,通常设置为False |
urllib3 只提供一种错误异常处理urllib3.expections.NewConnectionError
3. urllib3 VS urllib
-
请求方式
- urllib3:通过urllib.PoolMangaer.request请求,可以指定请求方式
- urllib:则直接通过urllib.request.urlopen()请求,默认是GET,当传入data则是POST
-
Cookie管理
- urllib3:不能直接添加cookie,只能将cookie设置到headers中
- urllib:可以通过request.build_opener方法来重新构造opener
-
设置Proxy代理
- urllib3:直接使用urllib.PoolMangaer()传入代理服务器地址即可
- urllib:则需要通过request.ProxyHandler()创建代理对象,然后在通过request.build_opener重构opener对象
4. 小试牛刀
根据上面我们对urllib3相关的方法使用,我们来实操一下吧~
-
基本使用步骤
- 导入import urllib3库
- 使用urllib3.PoolManger()创建一个连接池对象
- 连接池对象调用request方法,需要传入请求方法和url参数
- 打印请求返回信息如状态码、response信息等
import urllib3
http = urllib3.PoolManager()
req = http.request("GET","https://juejin.cn/user/211521683863847/posts")
print("请求状态码:",req.status)
print("response:",req.data.decode("utf-8"))
复制代码
总结
本期,我们对Python 网络编程第三方库urllib3相关方法的学习,对比python内置的urllib进行简单的对比。
以上是本期内容,欢迎大佬们点赞评论,下期见~
近期评论