一:【JSON通信协议】
Json请求串:
{
'user_name':'zhangsan',
'pwd':123456,
'code':'5632',
}
以json的形式来传递数据
该请求串协议表示登入向服务器发送的信息
二:【JSON串格式以及解析】
JSON是什么
JSON 指的是 JavaScript 对象表示法( Java Script Object Notation)JSON 是轻量级的文本数据交换格式
JSON特点JSON 独立于语言和平台JSON 具有自我描述性,更易理解JSON 易于机器解析和生成,并且易于书写和阅读JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 跟XML一样独立于语言和平台。
三:JSON语法规则
JSON只有两种结构:对象和数组, 由这两种结构嵌套和组合来表示各式各样的数据。
数据对象由一系列的属性/值对来表示
数据对象和属性/值对由逗号分隔
花括号保存对象
方括号保存数组
四:JSON语法规则2
JSON 值
JSON 值可以是:
数字(整数或浮点数)字符串(在双引号中)逻辑值(true 或 false)数组(在方括号中)对象(在花括号中)null
五:JSON示例
{ "employees":
[
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName":"Carter" }
]
}
这个 employees 对象是包含 3 个员工记录(对象)的数组
六:JSON解析str to Json/DICT
import json
str = '{"accessToken": "521de21161b23988173e6f7f48f9ee96e28", "User-Agent": "Apache-HttpClient/4.5.2 (Java/1.8.0_131)"}'
j = json.loads(str)
print(j)
print(type(j))
七:JSON解析Json to str
import json
j = {"accessToken": "521de21161b23988173e6f7f48f9ee96e28", "User-Agent": "Apache-HttpClient/4.5.2 (Java/1.8.0_131)"}
str = json.dumps(j)
print(str)
print(type(str))
八:JSON解析Object to json
import json
def object_to_json(self, obj):
obj_dict = obj.__dict__
my_obj_json = json.dumps(obj_dict)
1、将对象转换成字典
2、将字典转换为json对象
九:JSON解析 str to Json to Object
import json
def json_to_object(self, obj_str):
obj_json = json.loads(obj_str)
# 新建一个新的MyClass对象
my_object = BaiFuturesStrategyInfo()
# 将字典转化为对象
my_object.__dict__ = obj_json
1、字符串转换成json对象2、新建一个实例对象
3、将json赋值给对象的__dict__属性
十:【Python urllib模块】
urllib模块
urllib是Python中请求url连接的官方标准库
主要模块:
1、request: #请求
2、response # 返回
3、parse # 格式画
4、error # 错误
十一:urllib.request
request这个模块主要负责构造和发起网络请求,并在其中加入Headers、Proxy等。
主要方法:
urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
十二:urlopen参数
url: 需要打开的网址
data:提交的数据
timeout:设置网站的访问超时时间
urlopen返回对象提供方法:
read() , readline() ,readlines() , fileno() , close() :对HTTPResponse类型数据进行操作
info():返回HTTPMessage对象,表示远程服务器返回的头信息
getcode():返回Http状态码。如果是http请求,200请求成功完成 ; 404网址未找到
geturl():返回请求的url
十三:发起未携带参数请求
from urllib import request
resp = request.urlopen('http://www.baidu.com')
print(resp.read().decode())
访问的结果会是一个http.client.HTTPResponse对象,使用此对象的read()方法,则可以获取访问网页获得的数据。但是要注意的是,获得的数据会是bytes的二进制格式,所以需要decode()一下,转换成字符串格式。
十四:百度AI开放平台简介
百度AI开放平台提供全球领先的语音、图像、NLP等多项人工智能技术,开放对话式人工智能系统、智能驾驶系统两大行业生态,共享AI领域最新的应用场景和解决方案
https://ai.baidu.com/?track=cp:aipinzhuan|pf:pc|pp:AIpingtai|pu:title|ci:|kw:10005792
十五: 百度AI开放平台使用
step1:拥有一个百度账号(网盘)
step2:完成登录
step3:完成信息认证采集
step4:创建一个应用Application
step5:阅读技术文档
step6:通过AK、SK获取access_token
# encoding:utf-8
import requests
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
response = requests.get(host)
if response:
print(response.json())
step7:请求参数说明
step8:请求代码
# encoding:utf-8
import requests
import base64
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/dish"
# 二进制方式打开图片文件
f = open('[本地文件]', 'rb')
img = base64.b64encode(f.read())
params = {"image":img,"top_num":5}
access_token = '[调用鉴权接口获取的token]'
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
print (response.json())
step9:返回参数说明
step10:返回数据展示
十六:人脸注册
点击注册按钮,弹出输入框输入用户名打开摄像头(内置或外接都可以)采集一张人像判断采集的图像中是否含有人像;含有人像后注册要防止撞脸;注册成功后,用户名写入本地user.txt文件中,图片保存到本地项目img文件夹下
十七:人脸登录
点击登录按钮,打开摄像头按下空格键采集一张人像图片判断采集的图像中是否含有人像判断是否是已注册用户登录成功登录成功后跳转到菜品识别窗口。