- 接口传递数据格式类型为json格式,如下图抓包查看
- Python实现脚本请求接口并以中文打印接口返回的数据
1 import json 2 import requests 3 4 url = "https://....//Api/User/...." 5 values = {'token':'4CAC044621D1EE5DC8D573BA019EE4FD2CD87859','lang':'jp'} 6 # 打印values的数据类型,输出<class 'dict'> 7 print(type(values)) 8 print(values) 9 # json.dump将python对象编码成json字符串 10 values_json = json.dumps(values) 11 # 打印编码成json字符串的values_json的数据类型,输出<class 'str'> 12 print(type(values_json)) 13 print(values_json) 14 # requests库提交数据进行post请求 15 req = requests.post(url, data=values_json) 16 # 打印Unicode编码格式的json数据 17 print(req.text) 18 # 使用json.dumps()时需要对象相应的类型是json可序列化的 19 change = req.json() 20 # json.dumps序列化时对中文默认使用ASCII编码,如果无任何配置则打印的均为ascii字符,输出中文需要指定ensure_ascii=False 21 new_req = json.dumps(change, ensure_ascii=False) 22 # 打印接口返回的数据,且以中文编码 23 print(new_req)
- 执行脚本,接口返回数据
- 使用到的函数
json.dump() 将python对象编码成json字符串
requests.post(url, data) requests库提交数据进行post请求
req.json() 在使用json.dumps前将对象req进行json可序列化
json.dumps(change, ensure_ascii=False) json.dumps序列化数据并输入中文编码数据
- 脚本执行过程报错记录,requests爬虫时开启代理会报以下错误
requests.exceptions.SSLError: HTTPSConnectionPool(host='api.****.cn', port=443):Max retries exceeded with url: //Api/User/getStaffList (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))