这期内容当中小编将会给大家带来有关urllib3怎么在python中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
urllib3是一个功能强大,条理清晰,用于HTTP客户端的python库。许多python的原生系统已经开始使用urllib3.Urllib3提供了很多python标准库urllib里所没有的重要特性:
- <李>
线程安全
李> <李>连接池
李> <李>客户端SSL/TLS验证
李> <李>文件分部编码上传
李> <李>协助处理重复请求和HTTP重定位
李> <李>支持压缩编码
李> <李>支持HTTP和袜子代理
李> <强>一、得到请求强>
urllib3主要使用连接池进行网络请求的访问,所以访问之前我们需要创建一个连接池对象,如下所示:
import urllib3 时间=url “http://httpbin.org" 时间=http urllib3.PoolManager (); 时间=r http.request(& # 39;得到# 39;,url +“/get") print (r.data.decode ()) 打印(r.status) 带参数的 r =, http.request(& # 39;得到# 39;,& # 39;http://www.baidu.com/s& # 39;,字段={& # 39;wd # 39;: & # 39;周杰伦& # 39;}) print (r.data.decode ())
经查看源码:
def 请求(自我,,方法,url,字段=没有,头=没有,,* * urlopen_kw):
- <李>
第一个参数方法必选,指定是什么请求,& # 39;得到# 39;& # 39;得到# 39;& # 39;文章# 39;,& # 39;文章# 39;& # 39;把# 39;,& # 39;删除# 39;等,不区分大小写。
李> <李>第二个参数url,必选
李> <李>第三个参数的字段,请求的参数,可选
李> <李>第四个参数头可选
李>请求请求的返回值是<代码> & lt; urllib3.response。在0 x000001b3879440b8> HTTPResponse对象;代码>
我们可以通过dir()查看其所有的属性和方法。
dir (r)
直截取了一部分
# & # 39;数据# 39;,,& # 39;decode_content& # 39;,, & # 39; enforce_content_length& # 39;,, & # 39; fileno& # 39;,, & # 39;冲洗# 39;,,& # 39;from_httplib& # 39; #,& # 39;get_redirect_location& # 39;,, & # 39; getheader& # 39;,, & # 39; getheaders& # 39;,, & # 39;头# 39;,,& # 39;信息# 39;,,& # 39;isatty& # 39; #,& # 39;length_remaining& # 39;,, & # 39;读# 39;,,& # 39;read_chunked& # 39;,, & # 39;读# 39;,,& # 39;readinto& # 39;,, & # 39; readline # 39; #,& # 39;readlines& # 39;,, & # 39;原因# 39;,,& # 39;release_conn& # 39;,, & # 39;重试# 39;,,& # 39;寻求# 39;,,& # 39;seekable& # 39;,, & # 39;状态# 39; #,& # 39;流# 39;,,& # 39;严格# 39;,,& # 39;supports_chunked_reads& # 39;,, & # 39;告诉# 39;,,& # 39;截断# 39;,,& # 39;版本# 39;,,& # 39;可写# 39; #,& # 39;writelines& # 39;]
<强>二,文章请求强>
import urllib3 时间=url “http://httpbin.org" fields =, { & # 39;才能名字# 39;:& # 39;xfy # 39; } 时间=http urllib3.PoolManager () 时间=r http.request(& # 39;文章# 39;,url +“/post",字段=字段) print (r.data.decode ())
可以看到很简单,只是第一个参数得到换成了。
并且参数不需要再像urllib一样转换成字节型了。
<强>三,设置标题强>
import urllib3 headers =, { ,,& # 39;用户代理# 39;:& # 39;Mozilla/5.0, (Windows NT 10.0;, Win64;, x64), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/60.0.3112.113 Safari/537.36 & # 39; } 时间=http urllib3.PoolManager (); 时间=r http.request(& # 39;得到# 39;,url +“/get", headers =,标题) print (r.data.decode ())
<强>四,设置代理强>
import urllib3 时间=url “http://httpbin.org" headers =, { ,,& # 39;用户代理# 39;:& # 39;Mozilla/5.0, (Windows NT 10.0;, Win64;, x64), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/60.0.3112.113 Safari/537.36 & # 39; } 时间=proxy urllib3.ProxyManager (& # 39; http://101.236.19.165:8866& # 39;, headers =,标题) 时间=r proxy.request(& # 39;得到# 39;,url +“/ip") print (r.data.decode ())
<强>五,当请求的参数为json 强>
在发起请求时,可以通过定义身体参数并定义标题的内容类型参数来发送一个已经过编译的json数据
import urllib3 时间=url “http://httpbin.org" import json data =,{& # 39;名字# 39;:& # 39;徐繁韵& # 39;} 时间=json_data json.dumps(数据) 时间=http urllib3.PoolManager () r =, http.request(& # 39;文章# 39;,url +“/post", body =, json_data, headers =,{& # 39;内容类型# 39;:& # 39;application/json # 39;}) print (r.data.decode (& # 39; unicode_escape& # 39;))urllib3怎么在python中使用