原文链接:https://www.cnblogs.com/KGoing/p/6146999.html

   Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3。Urllib3提供了很多python标准库里所没有的重要特性:

               1、 线程安全

          2、 连接池

          3、 客户端SSL/TLS验证

          4、 文件分部编码上传

          5、 协助处理重复请求和HTTP重定位

          6、 支持压缩编码

          7、 支持HTTP和SOCKS代理

          8、 100%测试覆盖率

   Urllib3功能非常强大,但是用起来却十分简单:

          

安装:

  Urllib3 能通过pip来安装:

         $pip install urllib3

  你也可以在github上下载最新的源码,解压之后进行安装:

         $git clone git://github.com/shazow/urllib3.git

         $python setup.py install

urllib3的使用:

生成请求(request):

   首先,你必须导入urllib3模块:

          

   然后你需要一个PoolManager实例来生成请求,由该实例对象处理与线程池的连接以及线程安全的所有细节,不需要任何人为操作:

         

   通过request()方法创建一个请求:

         

   request()方法返回一个HTTPResponse对象。

   你还可以通过request()方法向请求(request)中添加一些其他信息,如:

         

   请求(request)中的数据项(request data)可包括:

Headers:

   在request()方法中,可以定义一个字典类型(dictionary),并作为headers参数传入:

         

Query parameters:

   对于GET、HEAD和DELETE请求,可以简单的通过定义一个字典类型作为fields参数传入即可:

         

   对于POST和PUT请求(request),需要手动对传入数据进行编码,然后加在URL之后:

         

 Form data:

   对于PUT和POST请求(request),urllib3会自动将字典类型的field参数编码成表格类型.

JSON:

   在发起请求时,可以通过定义body 参数并定义headers的Content-Type参数来发送一个已经过编译的JSON数据:

         

  Files & binary data:

   使用multipart/form-data编码方式上传文件,可以使用和传入Form data数据一样的方法进行,并将文件定义为一个元组的形式     (file_name,file_data):

         

   文件名(filename)的定义不是严格要求的,但是推荐使用,以使得表现得更像浏览器。同时,还可以向元组中再增加一个数据来定义文件的 MIME类型:

         

   如果是发送原始二进制数据,只要将其定义为body参数即可。同时,建议对header的Content-Type参数进行设置:

         

 Timeout :

   使用timeout,可以控制请求的运行时间。在一些简单的应用中,可以将timeout参数设置为一个浮点数:

         

   要进行更精细的控制,可以使用Timeout实例,将连接的timeout和读的timeout分开设置:

         

   如果想让所有的request都遵循一个timeout,可以将timeout参数定义在PoolManager中:

         

   或者

         

   当在具体的request中再次定义timeout时,会覆盖PoolManager层面上的timeout。

请求重试(retrying requests):

   Urllib3 可以自动重试幂等请求,原理和handles redirect一样。可以通过设置retries参数对重试进行控制。Urllib3默认进行3次请求重  试,并进行3次方向改变。

   给retries参数定义一个整型来改变请求重试的次数:

         

   关闭请求重试(retrying request)及重定向(redirect)只要将retries定义为False即可:

         

   关闭重定向(redirect)但保持重试(retrying request),将redirect参数定义为False即可:

         

   要进行更精细的控制,可以使用retry实例,通过该实例可以对请求的重试进行更精细的控制。

   例如,进行3次请求重试,但是只进行2次重定向:

         

   如果想让所有请求都遵循一个retry策略,可以在PoolManager中定义retry参数:

         

   或者

         

   当在具体的request中再次定义retry时,会覆盖 PoolManager层面上的retry。

python的urllib3相关推荐

  1. python爬虫urllib3模块详解

    鉴于urllib请求模块的功能已经无法满足开发者的需求,出现了功能更强大的urllib3模块,urllib3模块是一个第三方的网络请求模块. 安装命令:pip install urllib3 1.发送 ...

  2. Python爬虫--urllib3

    首先,导入urllib3模块: >>> import urllib3 您需要一个PoolManager实例来发出请求.此对象处理连接池和线程安全的所有详细信息,因此您不必: > ...

  3. Python培训教程分享:“高效实用” 的Python工具库

    作为一名合格Python技术员,对于Python工具库的使用是少不了的,本期Python培训教程就为大家分享的是""高效实用" 的Python工具库",希望能够 ...

  4. 15 个让新手爱不释手的 Python 高级库

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 译者:数据黑客 原文链接:https://medium.com/te ...

  5. 推荐15个让新手爱不释手的Python高级库

    译者:数据黑客 原文链接:https://medium.com/tech-explained/top-15-python-packages-you-must-try-c6a877ed3cd0 为什么我 ...

  6. 15个顶级Python库,你必须要试试!

    ????????关注后回复 "进群" ,拉你进程序员交流群???????? 作者丨Erik van Baaren 译者丨数据黑客 https://medium.com/tech-e ...

  7. python之批量下载抖音视频

    python批量下载抖音视频 知识储备:博主是在Pycharm下进行的 文件夹:dou_ying 1:在文件夹doy_ying下新建第一个文件:dou_ying_video_download.py 代 ...

  8. 第14章 Python网络爬虫

    爬虫简介 爬取网页的基础知识 HTML与JavaScript基础 爬虫的合法性 爬取网页的urllib和requests库 beautifulsoup4库 案例 爬虫简介 • 网页爬取,就是把URL地 ...

  9. python最简单的爬取邮箱地址_python3爬取网页中的邮箱地址

    1.爬虫分析 分析结果对: http://xxx.com?method=getrequest&gesnum=00000001 http://xxx.com?method=getrequest& ...

最新文章

  1. Python 技巧篇-官方网站打不开的情况下通过官方获取最新python安装包方法
  2. npm install 原理(node_modules)
  3. 9.Java中的运算符
  4. Spring boot(六):如何优雅的使用mybatis
  5. 基于mpi的奇偶排序_基于MPI的PSRS并行排序算法的实现
  6. 奇妙的等式 精妙的证明(二)
  7. ReentrantLock可重入锁的使用
  8. 会声会影编辑面板常用功能介绍
  9. 猿创征文|【FreeSwitch开发实践】使用sipp对FreeSwitch进行压力测试
  10. 行测题中逻辑判断题的规律
  11. mysql建库图解_MySQL数据库安装图解
  12. Python3 L13
  13. python把句子里单词最后一个字母换成大写
  14. Android加速度传感器测位移,一种校核加速度传感器测位移的方法与流程
  15. [大数据文章之其四] 概率数据结构简介
  16. reactos操作系统实现(6)
  17. 微信小程序wepy框架+minui踩坑之路
  18. Day04 关键字、标识符、变量及运算符
  19. 海伦公式已知三边求面积
  20. 计算机应用基础第五章试题及答案,计算机应用基础第五章测试题

热门文章

  1. 小程序报错 H.createEvent is not a function !已解决
  2. MSN -- AIR客户端
  3. 毕业工作5年被裁,那些进了大厂的程序员面试前都做了哪些准备?附赠课程+题库
  4. 主机托管的优势,为什么要选择主机托管
  5. RAC ReactiveCocoa 使用小集
  6. 从一亿个数中找出最大的一万个数或最小的一万个数
  7. linux常用命令-查询手册
  8. 移动叔叔MT6573一键ROOT工具!适应所有android2.2/2.3以上系统
  9. 视频教程-全新大数据企业电商数据仓库项目实战教程-大数据
  10. VLCMediaPlayer