urllib3怎么在python中使用

  介绍

这期内容当中小编将会给大家带来有关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中使用