阅读 122

基金列表获取之Java"伪"爬虫

1. 文章的由来

认识一哥们,颜值与才华兼具,奈何选择靠才华体验生活。算了不说他了,免得自我贬低 ~ . ~

      稠密的眉毛哗变地稍稍向上扬起,长而微卷的睫毛下,有着一双像朝露一样清亮的眼睛,英挺的鼻梁,像玫瑰花瓣一样粉嫩的嘴唇,还有白净的皮肤。
      冰冷孤傲的眼睛好像没有焦距,深黯的眼底布满了舒适,乌黑的头发,散在耳边,耳钻发出幽蓝的光线。俊美的不能不令人暗暗赞叹,他的身边围绕着一股冰冷的气味。复制代码

作为一个 "年轻"人,很多的朋友都应该对基金、股票有所涉猎,别说话,说话的都是亏损的多,这哥们除外哈!

本篇文章就是比葫芦画瓢,不喜勿喷,仅供学习娱乐使用。

2.数据来源

大佬已经给我们测过小河的深度了,不深 。。。 刚好比你我的身高高一截,所以 ... 切勿随意下河游泳,来吧,乘坐这个小木舟也是可以过河的。

小木舟

往下瞅,就这个优秀的请求,告诉了你赚钱的秘密,是不是希望自己的基金/股票列表也是一样大红色呢。

image-20211118202154412

 #原始链接: 提供想要的数据信息
 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());复制代码

获取如下数据信息截图如下:

2.jpg

但是上面的数据不是我们想要的怎么办呢,这时就要瞅瞅小木舟上有其他什么可用的工具,比如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);
  }复制代码

通过上面的简单操作,小木舟就可以在河中畅快的左右摇摆,可以浏览各页的基金详情列表。

3.jpg

后续可以将获取的数据自行存放数据库中,根据自己的需要进行相关的展示,也可以深入的分析个人收藏的基金动态变化信息。

基金代码基金名称最新净值
005477长安鑫禧灵活配置混合A0.8040
005478长安鑫禧灵活配置混合C0.7982
005343长安裕盛灵活配置混合A1.1877
 万事开头难,但是现如今如同站在巨人的肩膀上摘苹果,相对轻松些,沿着优秀的方向学习、钻研,跟随洪流前进,小木舟不


作者:啤酒不加冰
链接:https://juejin.cn/post/7032139477120188430


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐