urllib3怎么在python中使用-创新互联
这期内容当中小编将会给大家带来有关urllib3怎么在python中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
阳谷网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联公司从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库。许多Python的原生系统已经开始使用urllib3。Urllib3提供了很多python标准库urllib里所没有的重要特性:
线程安全
连接池
客户端SSL/TLS验证
文件分部编码上传
协助处理重复请求和HTTP重定位
支持压缩编码
支持HTTP和SOCKS代理
一、get请求
urllib3主要使用连接池进行网络请求的访问,所以访问之前我们需要创建一个连接池对象,如下所示:
import urllib3 url = "http://httpbin.org" http = urllib3.PoolManager(); r = http.request('GET',url+"/get") print(r.data.decode()) print(r.status) 带参数的get r = http.request('get','http://www.baidu.com/s',fields={'wd':'周杰伦'}) print(r.data.decode())
经查看源码:
def request(self, method, url, fields=None, headers=None, **urlopen_kw):
第一个参数method 必选,指定是什么请求,'get'、'GET'、'POST'、'post'、'PUT'、'DELETE'等,不区分大小写。
第二个参数url,必选
第三个参数fields,请求的参数,可选
第四个参数headers 可选
request请求的返回值是
我们可以通过dir()查看其所有的属性和方法。
dir(r)
直截取了一部分
#'data', 'decode_content', 'enforce_content_length', 'fileno', 'flush', 'from_httplib', # 'get_redirect_location', 'getheader', 'getheaders', 'headers', 'info', 'isatty', # 'length_remaining', 'read', 'read_chunked', 'readable', 'readinto', 'readline', # 'readlines', 'reason', 'release_conn', 'retries', 'seek', 'seekable', 'status', # 'stream', 'strict', 'supports_chunked_reads', 'tell', 'truncate', 'version', 'writable', # 'writelines']
二、post请求
import urllib3 url = "http://httpbin.org" fields = { 'name':'xfy' } http = urllib3.PoolManager() r = http.request('post',url+"/post",fields=fields) print(r.data.decode())
可以看到很简单,只是第一个参数get换成了post。
并且参数不需要再像urllib一样转换成byte型了。
三、设置headers
import urllib3 headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36' } http = urllib3.PoolManager(); r = http.request('get',url+"/get",headers = headers) print(r.data.decode())
四、设置代理
import urllib3 url = "http://httpbin.org" headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36' } proxy = urllib3.ProxyManager('http://101.236.19.165:8866',headers = headers) r = proxy.request('get',url+"/ip") print(r.data.decode())
五、当请求的参数为json
在发起请求时,可以通过定义body 参数并定义headers的Content-Type参数来发送一个已经过编译的JSON数据
import urllib3 url = "http://httpbin.org" import json data = {'name':'徐繁韵'} json_data = json.dumps(data) http = urllib3.PoolManager() r = http.request('post',url+"/post",body = json_data,headers = {'Content-Type':'application/json'}) print(r.data.decode('unicode_escape'))
六、上传文件
#元组形式 with open('a.html','rb') as f: data = f.read() http = urllib3.PoolManager() r = http.request('post','http://httpbin.org/post',fields = {'filefield':('a.html',data,'text/plain')}) print(r.data.decode()) #二进制形式 r = http.request('post','http://httpbin.org/post',body = data,headers={'Content-Type':'image/jpeg'}) print(r.data.decode())
七、超时设置
# 1全局设置超时 # http = urllib3.PoolManager(timeout = 3) # 2在request里设置 # http.request('post','http://httpbin.org/post',timeout = 3)
八、重试和重定向
import urllib3 http = urllib3.PoolManager() #重试 r = http.request('post','http://httpbin.org/post',retries = 5) #请求重试测次数为5次 ,默认为3ci print(r.retries) #Retry(total=5, connect=None, read=None, redirect=0, status=None) #关闭重试 http.request('post','http://httpbin.org/post',retries = False) #请求重试测次数为5次 ,默认为3ci r = http.request('get','http://httpbin.org/redirect/1',redirect = False) print(r.retries)# Retry(total=3, connect=None, read=None, redirect=None, status=None) print(r.status) print(r.data.decode()) print("--------------------") print(r.get_redirect_location()) #302不是异常
九、urllib3 本身设置了https的处理,但是有警告
虽然可以请求,但是报如下警告:
InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)
禁用警告:
import urllib3 urllib3.disable_warnings() #禁用各种警告 url = "https://www.12306.cn/mormhweb/" http = urllib3.PoolManager() r = http.request('get',url) print(r.data.decode())
上述就是小编为大家分享的urllib3怎么在python中使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联成都网站设计公司行业资讯频道。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站栏目:urllib3怎么在python中使用-创新互联
URL分享:http://ybzwz.com/article/desjcj.html