Java实时获取基金收益项目源码分享
本文章向大家介绍JAVA爬取天天基金网数据,主要包括JAVA爬取天天基金网数据使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
天天基金网网址:http://quote.eastmoney.com/center/gridlist.html#fund_lof
Java爬虫实时获取基金收益历史记录代码:
首先要自己定义几个参数:基金编码,页数,每页显示条数开始时间结束时间等
(我这直接写的静态方法使用的大家可以改成Test方法自行进行测试)
/** *httClient请求GET *获取基金网数据1 */ publicstaticJSONArraytestDepartmentList1(Stringcode){ IntegerpageIndex=1; IntegerpageSize=20; StringstartTime="2018-1-1"; StringendTime="2020-4-15"; Stringreferer="http://fundf10.eastmoney.com/f10/jjjz_"+code+".html"; longtime=System.currentTimeMillis(); Stringurl="http://api.fund.eastmoney.com/f10/lsjz?callback=jQuery18306596328894644803_1571038362181&"+ "fundCode=%s&pageIndex=%s&pageSize=%s&startDate=%s&endDate=%s&_=%s"; url=String.format(url,code,pageIndex,pageSize,startTime,endTime,time); System.out.println("url="+url); System.out.println(url); HttpRequestrequest=HttpUtil.createGet(url); request.header("Referer",referer); Stringstr=request.execute().body(); //获取str的长度 System.out.println("str="+str); intlength=str.length(); System.out.println("length="+length); //indexOf返回某个指定的字符串值在字符串中首次出现的位置 intindexStart=str.indexOf("("); System.out.println(indexStart); //截取字符串 str=str.substring(indexStart+9,length-90); System.out.println(str); //转换为Obj类型 JSONObjectjsonObject=JSON.parseObject(str); System.out.println(jsonObject); //获取数组 JSONArrayjsonArray=jsonObject.getJSONArray("LSJZList"); //计算数组的长度 intsize=jsonArray.size(); System.out.println(size); returnjsonArray; }
通过基金编码查询基金名称
(由于基金网url里面的信息只有基金编号跟涨跌幅日期等没有基金名称我们通过基金网的查询功能自行填充基金编码进行查询)
/** *httClient请求GET *获取基金网数据2 */ @Test publicstaticStringtestDepartmentList2(Stringcode){ //数据链接 Stringreferer="http://so.eastmoney.com/web/s?keyword="+code+""; longtime=System.currentTimeMillis(); Stringurl="http://push2.eastmoney.com/api/qt/stock/get?ut=fa5fd1943c7b386f172d6893dbfba10b&fltt"+ "=2&fields=f59,f169,f170,f161,f163,f171,f126,f168,f164,f78,f162,f43,f46,f44,f45,f60,f47,"+ "f48,f49,f84,f116,f55,f92,f71,f50,f167,f117,f85,f84,f58,f57,f86,f172,f108,f118,f107,f164,"+ "f177&invt=2&secid=0."+code+"&cb=jQuery1124006112441213993569_1587006450385&_=1587006450403"; url=String.format(url,code); System.out.println("请求url:"+url); //http请求 HttpRequestrequest=HttpUtil.createGet(url); request.header("Referer",referer); Stringstr=request.execute().body(); //获取str的长度 System.out.println("str="+str); intlength=str.length(); System.out.println("length="+length); //indexOf返回某个指定的字符串值在字符串中首次出现的位置 inti=str.indexOf("("); System.out.println(i); //截取字符串 str=str.substring(i+55,length-3); System.out.println(str); //转换为Obj类型 JSONObjectjsonObject=JSON.parseObject(str); System.out.println(jsonObject); StringfundName=jsonObject.getString("f58"); returnfundName; }
java实时获取基金收益
业务层实现:(主要功能:用户输入基金编号查询某个基金时如果数据库没有,自动从天天基金网爬取数据存储到数据库并显示到页面上)
显示的数据分别有:基金编号基金日期基金名称实际价格每日涨跌幅
@Override publicListquery(StringfundCode){ List query=fundHistoryDao.query(fundCode); if(query.size()==0){ JSONArrayjsonArray=testDepartmentList1(fundCode); System.out.println(jsonArray); //计算数组的长度 intsize=jsonArray.size(); System.out.println(size); //for循环遍历 for(intj=0;j query2=fundHistoryDao.query(fundCode); FundHistoryfundHistory1=query2.get(0); fundDao.saveFund2(fundHistory1); returnquery2; } returnquery; }
controller层
/** *基金页面数据交互 *@param *@return */ @RequestMapping("/enquiryfund") @ResponseBody publicResultenquiryfund(StringfundCode,StringfundName){ Resultresult=newResult<>(); if(fundCode!=""){ Listquery=fundHistoryService.query(fundCode); if(query==null){ List query2=fundHistoryService.query(fundCode); result.setData(query2); returnresult; } result.setData(query); returnresult; }elseif(fundName!=""){ List fundHistories=fundHistoryService.query2(fundName); result.setData(fundHistories); returnresult; } returnresult; }
java实时获取基金收益项目运行效果如图:
(根据基金编号进行查询基金如果数据库没有则自动从天天基金网拉取数据并显示到页面上共拉取20条历史数据)
/** *httClient请求GET *获取基金网数据1 */ publicstaticJSONArraytestDepartmentList1(Stringcode){ IntegerpageIndex=1; IntegerpageSize=20; StringstartTime="2018-1-1"; StringendTime="2020-4-15"; Stringreferer="http://fundf10.eastmoney.com/f10/jjjz_"+code+".html"; longtime=System.currentTimeMillis(); Stringurl="http://api.fund.eastmoney.com/f10/lsjz?callback=jQuery18306596328894644803_1571038362181&"+ "fundCode=%s&pageIndex=%s&pageSize=%s&startDate=%s&endDate=%s&_=%s"; url=String.format(url,code,pageIndex,pageSize,startTime,endTime,time); System.out.println("url="+url); System.out.println(url); HttpRequestrequest=HttpUtil.createGet(url); request.header("Referer",referer); Stringstr=request.execute().body(); //获取str的长度 System.out.println("str="+str); intlength=str.length(); System.out.println("length="+length); //indexOf返回某个指定的字符串值在字符串中首次出现的位置 intindexStart=str.indexOf("("); System.out.println(indexStart); //截取字符串 str=str.substring(indexStart+9,length-90); System.out.println(str); //转换为Obj类型 JSONObjectjsonObject=JSON.parseObject(str); System.out.println(jsonObject); //获取数组 JSONArrayjsonArray=jsonObject.getJSONArray("LSJZList"); //计算数组的长度 intsize=jsonArray.size(); System.out.println(size); returnjsonArray; }
这就是我为大家分享的Java实时获取基金收益项目源码,希望对大家有帮助哈~~~
到此这篇关于Java实时获取基金收益项目源码分享的文章就介绍到这了,更多相关Java获取基金收益内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。