基金列表获取之Java"伪"爬虫
1. 文章的由来
认识一哥们,颜值与才华兼具,奈何选择靠才华体验生活。算了不说他了,免得自我贬低 ~ . ~
稠密的眉毛哗变地稍稍向上扬起,长而微卷的睫毛下,有着一双像朝露一样清亮的眼睛,英挺的鼻梁,像玫瑰花瓣一样粉嫩的嘴唇,还有白净的皮肤。 冰冷孤傲的眼睛好像没有焦距,深黯的眼底布满了舒适,乌黑的头发,散在耳边,耳钻发出幽蓝的光线。俊美的不能不令人暗暗赞叹,他的身边围绕着一股冰冷的气味。复制代码
作为一个 "年轻"人,很多的朋友都应该对基金、股票有所涉猎,别说话,说话的都是亏损的多,这哥们除外哈!
本篇文章就是比葫芦画瓢,不喜勿喷,仅供学习娱乐使用。
2.数据来源
大佬已经给我们测过小河的深度了,不深 。。。 刚好比你我的身高高一截,所以 ... 切勿随意下河游泳,来吧,乘坐这个小木舟也是可以过河的。
小木舟
往下瞅,就这个优秀的请求,告诉了你赚钱的秘密,是不是希望自己的基金/股票列表也是一样大红色呢。
#原始链接: 提供想要的数据信息 http://fund.eastmoney.com/Data/Fund_JJJZ_Data.aspx?lx=1&sort=zdf,desc&page=2,200&onlySale=0 # lx分明就是类型的简写。sort 是对某些字段排序可以忽略。分页的话2,200就是第二页,每页200条,onlySale就是可以卖出的条件。 http://fund.eastmoney.com/Data/Fund_JJJZ_Data.aspx?lx=1&sort=zdf,desc&page=2,100&onlySale=0复制代码
别的不说,就为这个链接,你们得去给参考文章点个赞 !!!
3.数据抓取
接下来才是头疼的问题,你想要的都有了,那么我想要地麻烦满足一下吧。
对于一名“脸滚”键盘的你来说或许不是那么的困难,对吧 ( 哈哈哈 )。只需一个 Http 请求即可获取我们想要的数据。关于Java相关的Http请求方式种类有很多,笔者使用的是基于第三方开源工具类 Hutool 的Http请求。
// 1. 繁琐的请求方式 HttpConnection httpConnection = HttpConnection.create(url, null); InputStream inputStream = httpConnection.getInputStream(); // 读取数据信息 InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"UTF-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String temp; while ((temp = bufferedReader.readLine()) != null){ // 打印读取到的信息 System.out.println(temp); } // 2. 便捷的请求方式 HttpResponse httpResponse = HttpRequest.get(url).timeout(300 * 1000) .setConnectionTimeout(200 * 1000).execute(); System.out.println(httpResponse.body());复制代码
获取如下数据信息截图如下:
但是上面的数据不是我们想要的怎么办呢,这时就要瞅瞅小木舟上有其他什么可用的工具,比如Json格式解析,具体实现如下:
// 使用上面便捷的方法对获取的结果进行解析 // 根据打印的结果信息进行分析,需要将结果转换为标准的json格式 JSONObject jsonObject = new JSONObject(httpResponse.body().replace("var db=","")); // 获取基金详情列表Json数组 JSONArray datas = jsonObject.getJSONArray("datas"); List<Fund> funds = new ArrayList<>(); for (int i = 0; i < datas.length(); i++) { JSONArray jsonArray = datas.getJSONArray(i); Fund fund = new Fund(); fund.setCode(jsonArray.getString(0)); fund.setName(jsonArray.getString(1)); fund.setValue(jsonArray.getString(3)); funds.add(fund); }复制代码
通过上面的简单操作,小木舟就可以在河中畅快的左右摇摆,可以浏览各页的基金详情列表。
后续可以将获取的数据自行存放数据库中,根据自己的需要进行相关的展示,也可以深入的分析个人收藏的基金动态变化信息。
基金代码 | 基金名称 | 最新净值 |
---|---|---|
005477 | 长安鑫禧灵活配置混合A | 0.8040 |
005478 | 长安鑫禧灵活配置混合C | 0.7982 |
005343 | 长安裕盛灵活配置混合A | 1.1877 |
万事开头难,但是现如今如同站在巨人的肩膀上摘苹果,相对轻松些,沿着优秀的方向学习、钻研,跟随洪流前进,小木舟不
作者:啤酒不加冰
链接:https://juejin.cn/post/7032139477120188430