目录
学习记录:巨潮资讯网数据采集
👉1、目标网址
网页:深证信数据服务平台
# 巨潮资讯 --> 网行情中心
# 网页:http://webapi.cninfo.com.cn/#/marketDataDate
# 数据接口: http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1007
👉2、接口分析调试
找到数据接口: http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1007
搜索接口:
断点调试:
再:
再:
好,扣下JS 即可,这里就一个请求头的mode 加密:
👉3、代码实现
JS:
function getResCode() {
var time = Math.floor(new Date().getTime() / 1000);
return missjson("" + time);
}
function missjson(input) {
var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv" + "wxyz0123456789+/" + "=";
var output = "";
var chr1, chr2, chr3 = "";
var enc1, enc2, enc3, enc4 = "";
var i = 0;
do {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2)
+ keyStr.charAt(enc3) + keyStr.charAt(enc4);
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
return output;
}
console.log(getResCode())
Python
"""
CSDN: 抄代码抄错的小牛马
"""
# 巨潮资讯 --> 网行情中心
# 网页:http://webapi.cninfo.com.cn/#/marketDataDate
# 数据接口: http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1007
# 请求头 参数 加密
# mcode: MTY4MDUzMjE1NQ==
import execjs
import requests
# 获取 mode
def use_JS():
# 读取js文件
with open('./mode.js', encoding='utf-8') as f:
js = f.read()
# 通过compile命令转成一个js对象
docjs = execjs.compile(js)
# 调用function ==> 调用的方法名, 参数1 参数2
mode = docjs.call('getResCode')
print('mode:', mode)
return mode
# 请求数据
def get_data(mode):
data_api = 'http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1007'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.2242 SLBChan/25',
'Accept': '*/*',
'Accept-Encoding': 'gzip,deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'Cookie': 'Hm_lvt_489bd07e99fbfc5f12cbb4145adb0a9b = 1680532869;Hm_lpvt_489bd07e99fbfc5f12cbb4145adb0a9b = 1680533092',
'Host': 'webapi.cninfo.com.cn',
'mcode': mode,
'Origin': 'http://webapi.cninfo.com.cn',
'Referer': 'http://webapi.cninfo.com.cn/',
'X-Requested-With': 'XMLHttpRequest',
}
# 参数
form_data = {
'tdate': '2023-03-31',
'market': 'SZE',
}
data_resp = requests.post(url=data_api, headers=headers,
data=form_data)
print('-------------巨潮资讯 - 网行情中心-------------')
print('请求状态:', data_resp.status_code)
print('获取的数据:', data_resp.json())
pass
if __name__ == '__main__':
mode = use_JS()
get_data(mode)
运行结果:
JS
PY