最近想在网上爬一些股票日线数据用来分析,然后做一些钉钉预警功能。找来找去,最终选择聚宽http api接口。
1.搜狐
只有日线接口,当天日线数据要等到下午4:30以后。
另外每次只能获取100条数据。
方法:https://q.stock.sohu.com/hisHq?code=cn_000001&start=20210301&end=20210301&stat=2&order=A&period=d&callback=historySearchHandler&rt=jsonp
2.新浪
获取最新的股票行情
方法:http://hq.sinajs.cn/list=sz000001
其他接口参考下面链接
https://blog.csdn.net/Llingmiao/article/details/79941066
3.聚宽
聚宽数据比较全面,基本接口都有,但每天限制100万条记录。对一般用户也足够了。
聚宽API链接地址:
https://www.joinquant.com/help/api/help#JQDataHttp:get_all_securities-%E8%8E%B7%E5%8F%96%E6%89%80%E6%9C%89%E6%A0%87%E7%9A%84%E4%BF%A1%E6%81%AF
例子:get_all_securities - 获取所有标的信息
public String get_all_securities(String token,String code,String date) {
Map<String,String> paramMap = new HashMap<>();
paramMap.put("method","get_all_securities");
// 获取当前token
paramMap.put("token",token);
// 标的类型
paramMap.put("code",code);
// 日期
paramMap.put("date",date);
String result = HttpClientUtil.postJson("https://dataapi.joinquant.com/apis", JSON.toJSONString(paramMap));
System.out.println(result);
return result;
}
返回字符串:
code,display_name,name,start_date,end_date,type
000001.XSHE,平安银行,PAYH,1991-04-03,2200-01-01,stock
000002.XSHE,万科A,WKA,1991-01-29,2200-01-01,stock
处理返回数据保存数据库
public Boolean initSecurities(StockType stockType) {
String token = ijqDataHttpApiService.get_current_token();
// 初始化标的信息
String result = ijqDataHttpApiService.get_all_securities(token,stockType.getCode(),"");
if(StringUtils.isEmpty(result)){
System.out.println("初始化标的信息为空");
return false;
}
String[] arrResult = result.split("\\n");
List<Securities> lists = new ArrayList<>(arrResult.length-1);
for(int i=1; i<arrResult.length; i++){
String[] arrSecurities = arrResult[i].split(",");
Securities securities = new Securities();
securities.setStockCode(arrSecurities[0]);
securities.setStockName(arrSecurities[1]);
securities.setNickName(arrSecurities[2]);
securities.setStockType(arrSecurities[5]);
securities.setStartDate(arrSecurities[3]);
securities.setEndDate(arrSecurities[4]);
lists.add(securities);
}
return this.saveBatch(lists,100);
}```