python3中urllib库_Python--urllib3库详解
Python--urllib3库详解
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。
文章来源: blog.csdn.net,作者:轻狂书生FS,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/LookForDream_/article/details/78624594
python3中urllib库_Python--urllib3库详解相关推荐
- python怎么横着输出_对python3中, print横向输出的方法详解
对python3中, print横向输出的方法详解 Python 2 : print打印的时候,如果结尾有逗号,打出来时候不会换行.但是在python3里面就不行了. Python3: 3.0的pri ...
- python3中input输入浅谈_详解Python3中的 input() 函数
详解Python3中的 input() 函数 一.知识介绍: 1.input() 函数,接收任意输入,将所有输入默认为字符串处理,并返回字符串类型: 2.可以用作文本输入,如用户名,密码框的值输入: ...
- python中递归函数写法_python递归函数用法详解
上期我们介绍了函数式编程,这期内容就是关于递归的函数内容,本期还是按照老规矩,给大家进行核心整理,内容通俗易懂,搭配实际应用,以供大家理解. 关于递归: 百度解释:是指函数/过程/子程序在运行过程序中 ...
- python3中sort和sorted的区别详解
sort和sorted的区别 虽然python3中sort()和sorted()都可以用来排序,但二者有以下两个最主要的区别: sort只能应用在列表list上,而sorted可以对所有可迭代的对象进 ...
- python中三元运算符_python 三元运算符详解
python是没有三元描述符的,但是可以通过模拟的实现. 其中一种是: (X and V1) or V2 正常情况下是不会有错误的,但是文章中也提到了,当V1=""时,就会有问题 ...
- python中getopt函数_python getopt函数详解
getopt模块可以帮助脚本解析sys.argv的命令行参数,它遵守和Unix getopt()函数相同的约定,该模块提供两个函数和一个异常. 1. getopt.getopt(args, optio ...
- python中getopt函数_python getopt模块详解
getopt这个函数 就是用来抽取 sys.argv 获得的用户输入来确定执行步骤. getopt是个模块,而这个模块里面又有getopt 函数,所以getopt需要这样这样用. getopt.get ...
- tkinter中text属性_python tkinter基本属性详解
1.外形尺寸 尺寸单位:只用默认的像素或者其他字符类的值!,不要用英寸毫米之类的内容. btn = tkinter.Button(root,text = "按钮")# 设置按钮尺寸 ...
- python中tile的用法_python3中numpy函数tile的用法详解
tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组.比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题 ...
- python3 urlencode_Python2和Python3中urllib库中urlencode的使用注意事项
前言 在Python中,我们通常使用urllib中的urlencode方法将字典编码,用于提交数据给url等操作,但是在Python2和Python3中urllib模块中所提供的urlencode的包 ...
最新文章
- Unity3D脚本属性
- boost.asio包装类st_asio_wrapper开发教程(2014.5.23更新)(一)-----转
- 远程ssh shell 脚本 tcgetattr: Inappropriate ioctl for device错误
- [转帖]Sqlcmd使用详解
- Beta阶段发布说明
- Google App Engine Java功能和命名空间API
- 产品认知:产品经理进入新公司第一件事该做什么?
- 工程造价步骤_史上最全造价工作流程,全了
- mysql catalog def_在ArcCatalog里如何连接数据库-百度经验
- PowerDesigner显示工具栏
- 关于网页背景图怎样自动适应屏幕大小
- 网友吐槽12306网站 专家:已接近技术极限
- VBA 获取最大行数和最大列数
- 打造我们心中永恒的m500
- NLP:自然语言处理技术近十年发展技术更迭的简介、案例之详细攻略(持续更新)daiding待更新
- logback日志不打印到文件问题深入剖析
- 海康大华RTSP转HLS直播
- MySQL数据库开发规范
- 算法工程师0——算法工程师学习进阶路线
- 传感器的低频响应和截止频率
热门文章
- NFT 的周期轮转:野生→泡沫→价值回归
- codewar题目练习
- 我在杭州找实习的那些天
- 第四次考核 Jimmy 学徒考核 Linux安装软件 rnaseq上游分析-2 ascp kingfisher数据下载ena Linux高速下载 Linux下载网页内容
- 推荐几个java学习网站
- 简单理解VIO(二)
- 应用商店成恶意APP滋生新温床 190款感染应用让你措不及防
- emoji隐藏表情_敢表态 不隐藏!REEBOK REEmoji 系列 秒变“行走的表情包”
- 维度诅咒_CEO自我的礼物和诅咒
- 关于胶囊之间的动态路由的理解(基于Hinton的胶囊网络)