- 接口傳遞數據格式類型為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')])")))