爬取数据源为天天基金网的页面基金数据

利用java爬取基金数据并简单筛选后的效果图

创建java maven项目,推荐用spring boot

maven需要引入的jar包依赖

     <!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--阿里巴巴fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.73</version></dependency><!-- hutool工具类--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.6</version></dependency>

单类代码实现,copy代码在idea编辑器里主类启动


import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.StringUtils;import java.util.List;
import java.util.stream.Collectors;public class FundSearch {static String api = "https://fundapi.eastmoney.com/fundtradenew.aspx?sc=1n&st=desc&cp=&ct=&cd=&ms=&fr=&plevel=&fst=&ftype=&fr1=&fl=0&isab=1";private static final List<String> typeList = Lists.newArrayList();static {typeList.add("&ft=gp"); //股票型typeList.add("&ft=hh");//混合型typeList.add("&ft=zq"); //债券型typeList.add("&ft=zs"); //指数型typeList.add("&ft=qdii"); //QDIItypeList.add("&ft=fof"); //FOF}public static void main(String[] args) {List<Fund> funds = getAllFunds();System.out.println("共扫描基金" + funds.size() + "只");System.out.println("搜索近1周涨幅大于1%,近1月涨幅大于4%,近3月涨幅大于12%,近6月涨幅大于24%的基金,近1年涨大于48%的基金");funds = funds.stream().filter(e -> e.getDealStatus() == 1 && e.getWeekRise() > 1 && e.getMonthRise() > 4 && e.getThreeMonthsRise() > 12 && e.getSixMonthsRise() > 24 && e.getOneYearRise() > 48).collect(Collectors.toList());System.out.println("符合条件的基金共" + funds.size() + "只");funds.forEach(e -> System.out.println(e.getRowData()));}public static List<Fund> getAllFunds() {List<Fund> dataList = Lists.newArrayList();typeList.forEach(type -> {dataList.addAll(getTypeFunds(api, type));});return dataList;}public static List<Fund> getTypeFunds(String API, String type) {List<Fund> dataList = Lists.newArrayList();String body = HttpUtil.get(API + type + "&pi=1&pn=1000");Integer pages = getPages(body);dataList.addAll(parseFundData(body));for (int i = 0; i < pages; i++) {body = HttpUtil.get(API + type + "&pi=" + (i + 2) + "&pn=1000");dataList.addAll(parseFundData(body));}return dataList;}public static List<Fund> parseFundData(String text) {List<Fund> funds = Lists.newArrayList();text = text.replace("var rankData = ", "");text = text.replace(";", "");JSONObject json = JSONObject.parseObject(text);JSONArray array = json.getJSONArray("datas");for (int i = 0; i < array.size(); i++) {Fund fund = conversion(array.getString(i));funds.add(fund);}return funds;}public static Integer getPages(String text) {text = text.replace("var rankData = ", "");text = text.replace(";", "");JSONObject json = JSONObject.parseObject(text);Integer pages = json.getInteger("allPages");return pages;}public static Fund conversion(String text) {String[] args = text.split("\\|");Fund fund = new Fund();fund.setRowData(text);fund.setCode(args[0]);fund.setName(args[1]);fund.setType(args[2]);fund.setDate(args[3]);fund.setNetValue(StrToDouble(args[4]));fund.setDayRise(StrToDouble(args[5]));fund.setWeekRise(StrToDouble(args[6]));fund.setMonthRise(StrToDouble(args[7]));fund.setThreeMonthsRise(StrToDouble(args[8]));fund.setSixMonthsRise(StrToDouble(args[9]));fund.setOneYearRise(StrToDouble(args[10]));fund.setTwoYearsRise(StrToDouble(args[11]));fund.setThreeYearsRise(StrToDouble(args[12]));fund.setCurYearRise(StrToDouble(args[13]));fund.setHistoryRise(StrToDouble(args[14]));fund.setPoundage(StrToDouble(args[18]));fund.setDtStatus(Integer.valueOf(args[22]));fund.setDealStatus(Integer.valueOf(args[23]));return fund;}public static Double StrToDouble(String str) {str = str.replace(",", "");return StringUtils.isEmpty(str) ? 0 : Double.valueOf(str);}@Datastaticclass Fund {/*** 基金代码**/private String code;/*** 基金名称**/private String name;/*** 基金类型**/private String type;/*** 净值时间**/private String date;/*** 基金净值**/private Double netValue;/*** 日增长率**/private Double dayRise;/*** 近1周**/private Double weekRise;/*** 近1个月**/private Double monthRise;/*** 近3个月**/private Double threeMonthsRise;/*** 近6个月**/private Double sixMonthsRise;/*** 近1年**/private Double oneYearRise;/*** 近2年**/private Double twoYearsRise;/*** 近3年**/private Double threeYearsRise;/*** 近1年**/private Double curYearRise;/*** 成立以来**/private Double historyRise;/*** 手续费**/private Double poundage;/*** 是否可以定投0no1ok**/private Integer dtStatus;/*** 交易状态**/private Integer dealStatus;/*** 行文本数据**/private String rowData;}}

本章完结,后续可以建立数据库,对基金数据,做更深度一点的数据分析。

利用Java爬取基金网站的基金数据,快速筛选优质热门基金相关推荐

  1. 爬取某网站的潮汐数据

    爬取某网站的潮汐数据 import re,os import requests import datetime import random import timeheaders = {'User-Ag ...

  2. python爬取股票信息_利用Python爬取网易上证所有股票数据(代码

    利用Python爬取网易上证所有股票数据(代码 发布时间:2018-04-14 17:30, 浏览次数:1261 , 标签: Python import urllib.request import r ...

  3. 利用xpath爬取链家租房房源数据并利用pandas保存到Excel文件中

    我们的需求是利用xpath爬取链家租房房源数据,并将数据通过pandas保存到Excel文件当中 下面我们看一下链家官网的房源信息(以北京为例) 如图所示,我们通过筛选得到北京租房信息 那么我们需要将 ...

  4. 利用Python爬取翻译网站的翻译功能

    现在我想分享一个利用Python技术,爬取一个翻译网站的翻译功能的小代码. 首先隆重介绍我们今天将要爬取的网站:http://fy.iciba.com/ 咱们用Python中的urllib模块的功能进 ...

  5. python爬取外文文献翻译_利用Python爬取翻译网站的翻译功能

    现在我想分享一个利用Python技术,爬取一个翻译网站的翻译功能的小代码. 首先隆重介绍我们今天将要爬取的网站:http://fy.iciba.com/ 咱们用Python中的urllib模块的功能进 ...

  6. python爬取web漫画网站_[Python爬虫学习]利用selenuim爬取漫画网站

    注意事项 版本 Python版本为 Python-3.8.3 系统为 Windows10 浏览器为 Firefox-77.0 前置 \(selenium\) \(BeautifulSoup\) \(r ...

  7. 利用paddlepaddle爬取丁香园实时统计数据,并生成疫情地图!!

    当下,新型冠状病毒感染的肺炎疫情无时无刻不牵动着人们的心.面对来势汹汹的疫情,除了奋战在前线的医护人员以及防疫建设工作者们,小媛们也想尽一份绵薄之力. 这不,今天为大家带来了一份超超超简单的!生成自己 ...

  8. Python爬取网站用户手机号_利用python爬取慕课网站上面课程

    1.抓取网站情况介绍 抓取网站:http://www.imooc.com/course/list 抓取内容:要抓取的内容是全部的课程名称,课程简介,课程URL ,课程图片URL,课程人数(由于动态渲染 ...

  9. 利用爬虫爬取 zol网站热门手机

    使用了20几分钟,爬取了zol相关的热门手机型号.特点.价格.上市时间.屏幕大小相关信息.对最新的热门手机做了一个简单的统计.如果你想知道任何其他的信息,可以给我留言.我已经把我的相关代码传导了git ...

最新文章

  1. 三个线程按循序一个打印A一个打印B一个打印C 循环打印?
  2. PTA 基础编程题目集 7-11 分段计算居民水费 C语言
  3. hbase redis mongoddb neo4j 非关系型数据库简介
  4. (收藏)[Unix] vi基本操作方法
  5. 前端学习(1363):学生档案信息管理5
  6. 树莓派开始玩转linux pdf_用树莓派构建 Kubernetes 集群 | Linux 中国
  7. USACO-Section2.3 Longest Prefix
  8. Oracle小复习(1)
  9. rabbitmq中的消息有id吗_RabbitMQ 如何实现对同一个应用的多个节点进行广播
  10. 直播系统源码,直播平台系统源码
  11. J1939入门(一)
  12. 新旧身份证合法性验证及相互转换算法(一):关于中国居民身份证的常识
  13. 没有光驱照样安装Win7!U盘装系统教程
  14. 根据身份证号 计算具体年龄
  15. 微信小程序学习笔记③——wxml+wxss+js基础入门[样例+解析]
  16. 计算机英语200心得体会,学英语的心得体会作文200字作文:学习英语的感受的英语作文(100~120词)...
  17. c++构造函数的定义
  18. 《计算机工程》投稿经验
  19. python中flush什么意思_python flush()定义及作用详解(实例分析)
  20. DGUT新学期,新FLAG

热门文章

  1. Mysql基础-------初识数据库,三大范式
  2. postman配置https证书(手动生成的证书)
  3. 车路协同到底要协同什么?
  4. 面试真题:经典智力题最详汇总(中)
  5. python制作文字识别_用Python轻松进行图像文本识别
  6. sc不是内部命令或外部命令
  7. Android 文本,软键盘使用指南
  8. cropper的基本用法
  9. 期货策略matlab,用BP神经网络,分析期货数据,附详细代码
  10. 2021Pycharm学生免费使用