app.vue里使用data_【20200926】在Windows使用Python的URLLib3库

本文介绍了Python中urllib3库的使用,包括GET、带参数GET、POST普通数据和POSTJson数据的请求方法,并展示了HTTP认证的实现。通过实例代码展示了urllib3在处理网络请求的强大功能,强调了其在模拟网络操作中的重要性。
摘要由CSDN通过智能技术生成

介绍

介绍

福哥在使用urllib库访问API接口的时候,发现一个很奇葩的问题,就是网上满天飞的教程里都是教大家如何使用urllib的,但是通过pip安装urllib提示找不到软件包,这是怎么回事?后来又看到有人使用urllib2来替换urllib库,使用pip尝试安装一下,发现urllib2也是找不到软件包,啊?怎么办?再后来又发现有人使用urllib3来替换urllib和urllib2,再使用pip尝试安装一下,发现urllib3还是找不到,崩溃了!最后看到有人说urllib和urllib2是自带的,不需要安装了,那么是不是urllib3也不需要安装呢?直接import一下,发现居然成功了!好吧,总算是用起来了~~

福哥对比urllib和urllib2以及最新版本的urllib3的语法,发现urllib3还是最完善的,怪不得要替换掉urllib和urllib2了,那么童鞋们就跟福哥学习一下urllib3的使用方法吧。

GET

直接GET

直接请求一个网址的内容

import urllib3

# argv
url = "http://www.baidu.com"

# load url by get
http = urllib3.PoolManager()
res = http.request('GET',url)
status = res.status
source_uc = res.data.decode("utf-8")
source = source_uc.encode("gbk","ignore")

print ("状态码:" + str(status))
print ("源代码:" + source)

带参数GET

带参数请求一个网址的内容,在百度里搜索“site:tongfu.net”

import urllib3
import re

# argv
url = "http://www.baidu.com/s"

# load url by get
http = urllib3.PoolManager()
res = http.request('GET',url,fields={'wd':"site:tongfu.net"})
status = res.status
source_uc = res.data.decode("utf-8")
source = source_uc.encode("gbk","ignore")

print ("状态码:" + str(status))

regexp = re.compile("同福主页 - 首页 - 同福网 - TONGFU.net", re.M)
mats = regexp.search(source)
if mats:
    print (mats.group())
else:
    print ("没有找到")

可以看出我们通过传递wd参数,查询到百度,得到了查询结果

POST

POST普通数据

直接通过POST方式请求一个网址并提交一组数据

import urllib3
import re

# argv
url = "http://www.baidu.com/s"

# load url by get
http = urllib3.PoolManager()
res = http.request('POST',url,fields={'wd':"site:tongfu.net"})
status = res.status
source_uc = res.data.decode("utf-8")
source = source_uc.encode("gbk","ignore")

print ("状态码:" + str(status))

regexp = re.compile("同福主页 - 首页 - 同福网 - TONGFU.net", re.M)
mats = regexp.search(source)
if mats:
    print (mats.group())
else:
    print ("没有找到")

可以看出使用POST方式传递wd参数,百度是不认的,查询不到结果

POST Json数据

通过POST方式请求一个网址并以json格式提交一组数据

编码JSON数据使用json.dumps,这个是有失败情况的,所以需要在try下使用

import urllib3
import json

# argv
url = "http://www.baidu.com/s"

# load url by get
http = urllib3.PoolManager()
try:
    data = {'wd':"site:tongfu.net"}
    json_data = json.dumps(data)
except Exception as e:
    doNothing = e
res = http.request('POST',url,body=json_data,headers={'Content-Type':"application/json"})
status = res.status
source_uc = res.data.decode("utf-8")
source = source_uc.encode("gbk","ignore")

print status
print source

JSON

解析JSON数据

一般情况下,接口返回的数据都是json格式的,我们需要学习如何处理json数据

解析JSON数据使用json.loads,这个是有失败情况的,所以需要在try下使用

import urllib3
import json

# argv
url = "https://tongfu.net/api/demo/user"

# load url by get
http = urllib3.PoolManager()
res = http.request('POST',url)
status = res.status
source_uc = res.data.decode("utf-8")
source = source_uc.encode("gbk","ignore")
try:
    source_json = json.loads(source_uc)
except Exception as e:
    doNothing = e

print status
print source

print source_json.get('errcode')
print source_json.get('errmsg')
print source_json.get('data').get('total')
print source_json.get('data').get('datas')[0].get('title')

认证

http认证

使用urllib3实现http认证的方法

import urllib3
import json

# argv
url = "http://www.baidu.com/s"

# load url by get
http = urllib3.PoolManager()
try:
    data = {'wd':"site:tongfu.net"}
    json_data = json.dumps(data)
except Exception as e:
    doNothing = e
headers_data = urllib3.util.make_headers(basic_auth="demo:123456")
headers_data['Content-Type'] = "application/json"
res = http.request('POST',url,body=json_data,headers=headers_data)
status = res.status
source_uc = res.data.decode("utf-8")
source = source_uc.encode("gbk","ignore")

print status
print source

总结

可以看到urllib3是个非常强大的软件包,基本可以完成模拟绝大部分网络操作的需要。童鞋们需要掌握这一技术,因为没有网络的软件的功能是有限的,没有网络的游戏是没有灵魂的,无论我们编写什么样的程序,脱离网络基本都是小玩闹了。

【20200926】在Windows使用Python的URLLib3库 第 1 页​m.tongfu.net
06c2e0665f88e953ee10ae76801d36df.png

997be3e88055f91d07b3563bb77fad82.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值