Java 爬虫-场外基金分析与筛选实践

1 前言

上篇文章中已经介绍了场内 ETF 基金的爬虫和分析,在本文中将介绍另外一种基金-场外基金爬虫。场外基金是一种对小白来说是一种很重要的理财手段,曾经无脑买入了一些基金,但是表现都不好。在本文中将介绍如何利用 java 爬虫获取场外基金的基本信息、买卖费率和收益表现。最终会将爬虫的信息存入到数据库中用于查询和数据分析。

2 前期准备

首先我们需要从天天基金网上获取场外基金的信息列表,当点击分页时通过浏览器控制台可以看到列表信息的返回,这就是需要解析的数据来源。但是场外基金和场内基金不同,其接口列表和数组位置信息含义不同,这里需要按照基金信息页面的数值进行逐个比对,找到每个下标对应的含义。

1693063193094.png

# 场外基金列表地址
http://fund.eastmoney.com/data/fundranking.html

和场内基金相同,场外基金也需要使用 Java 进行爬虫,主要是使用 hutool 工具类 和 jsoup 抓取页面进行页面元素处理。 根据所需要的数据信息,构建的场外基金数据库表的结构如下所示:

1693055605835.png

3 数据抓取

通过浏览器控制台可以发现场外基金的访问列表,返回的内容和场内基金结果是相似的,对比基金详情页面和列表返回的内容,可以定位分析数组中每个元素对应值的含义。

# 基金列表接口
http://fund.eastmoney.com/data/rankhandler.aspx?op=ph&dt=kf&ft=all&rs=&gs=0&sc=1nzf&st=desc&sd=2022-08-26&ed=2023-08-26&qdii=&tabSubtype=,,,,,&pi=1&pn=50&dx=1
# 场内基金详情页面
http://fund.eastmoney.com/006479.html
# 基金基本信息页面
http://fundf10.eastmoney.com/jbgk_006479.html
# 基金费率信息
http://fundf10.eastmoney.com/jjfl_002147.html

# 返回内容的分析
0 006479, 基金代码
1 广发纳斯达克100ETF联接人民币(QDII)C, 基金名称
2 GFNSDK100ETFLJRMBQDIIC,
3 2023-08-24, 更新日期
4 4.5258, 单位净值
5 4.5258, 累计净值
6 -2.27, 日增长率
7 0.54, 近一周 
8 -3.32, 近一月
9 10.82, 近三月
10 28.19, 近六月
11 18.97, 近一年
12 3.75, 近两年
13 28.10, 近三年
14 38.54, 今年来
15 105.56, 成立以来
16 2018-10-25 成立日期
,1,,,0.00%,,,,

分析场外基金的逻辑和场内基金是类似的,可以参考 java 场内基金爬虫与存储实战 中的分析逻辑和方法,下图是基金详情页面的展示。

1693055159560.png

在获取场外基金列表信息时,同样需要在请求头中添加 Referer 信息,同样使用 hutoolhttp 请求工具类获取接口的返回内容。

1693063378827.png

和场内基金不同的是,场外基金不仅数量多,种类也多,目前市场上的股票数量是 5000+,但是基金的规模已经是 1.3w+, 其选择的难度加大。由于每个种类的数量也多,这里还需要用到分页去获取每页的基金数据,场外基金的接口响应比场内基金慢的多。通过对比各种类型基金的请求参数,发现其参数 ft 传输不同的值,即可获取不同种类的基金。 具体如下所示:

gp-股票型
hh-混合型
zq-债券型
zs-指数型
qdii-qdii
lof-lof
fof-fof

场外基金的信息主要分为三个部分,列表展示的涨跌表现、基金的基本信息、买卖手续费信息。其中第一个需要每天都需要更新,第二个只需要在季报时更新即可,第三个一般基金成立后就不会修改,所以对于这三者的更新频率是不同的。

1693064453656.png

这里的基本信息和场内基金类似,就不展开讲述,这里讲述一下手续费的信息获取方式。打开基金费率信息页面,我们需要解析申购费率和赎回费率表格中的内容。

1693065196660.png

如下图所示,主要是通过 jsoup 来解析 html 页面来获取赎回费率和申购费率。

1693065462293.png

4 数据存储

通过对场外基金的分析和抓取,已经获取到了场外基金的主要信息,并使用对象进行存储,这里需要循环所有基金的类型,获取一批基金数据,然后进行存储。还是通过 mybaits-plus 存储,使用的存储数据库是阿里云 oceanbase

这里使用的是定时任务的方式去获取数据,由于场外基金的数据量太多,跑完整个流程需要 1h 左右。
1693065833269.png

通过数据的获取,可以通过对比涨跌幅,持有期限和基金的规模,选到自己心仪的基金。场外基金列表已经全部获取到了,在市场上好的时候,可以买入权益类资产,股票基金或者指数基金或者主题基金,在市场不好的时候,买入稳健的债券基金,通过该列表可以进行全量分析和筛选,需要综合考虑自己的选择标的,其中基金的规模不能太低,池子太小不好操作,规模太大也不好,最好是 5-50 亿元之间的规模。

1693066054026.png

5 总结

在本文中,通过爬虫的方式获取场外基金的信息(包括涨跌幅,基本信息、买卖费率),并存入到数据库中方便分析和研究,至此已经完成了场外和场内基金的抓取和存储,对基金投资感兴趣的掘友可以依据此进行研究和选择。项目涉及的代码已经上传,项目 github 地址 springboot-auth

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值