大家好,我是永恒君!
上次的实例分享了批量查询基金信息、基金净值:Excel VBA 实例(39)- 一键批量查询基金信息、基金净值
现在又有遇到另外一个情况!
需求背景
有过理财投资经验的朋友应该知道,关于基金的一切信息,最终必不可少的就是基金的代码。
就好比人的身份证一样,代码就是基金的身份证,是基金的唯一标识,即每个基金的代码是不一样的。
查询单个基金的代码,这个好办,东方财富等网站或者搜索引擎里面直接搜关键词基本就能搞定。
如果需要查询多个基金的代码呢?永恒君网上查找了一番,貌似没有现成的工具可以使用。
那么就自力更生,今天来分享一个快速查询基金代码的VBA实例。
问题描述
如下图,我们搜集整理了一些基金的名称放在A列,需要找到对应的基金代码填入B列。
思路分析
在搜索引擎里面直接搜索关键词,是可以找到我们需要的代码的。基于这个,永恒君的大体思路可以是这样的:
以关键词富国中证医药50ETF
为例
1、在百度里搜索,提取前3页的网页标题。
2、从这些标题当中提取所有的代码。
3、统计都有哪些非空代码出现过
4、统计这些代码出现的次数频率
5、将出现次数最高的作为基金的代码。
这样,我们就把富国中证医药50ETF
的基金代码找到了。
至此,我们只需要把上面的过程整合一下就可以进行批量处理了。
效果演示
回到开头的那个表格,我们来演示一下效果:
因为是要进行网络请求,速度自然会受当时的网络环境有影响。不过可以看到,代码都还是都可以提取到的。
效果评测
1)下图是程序提取的代码和永恒君手工查找的代码对比。
细心点的朋友可能发现了,最后一条国联安中证半导体ETF
代码和手工查找的是不一样的。
经过永恒君反复调试和核对,是因为请求太频繁了,百度开启了安全验证,因而数据就没法抓取了。
故,将需要将请求的速度降下来,虽然提取的时间长了,但结果更让人满意了。
2)平时我们查找基金信息的时候,一般只会记住关键词,类似于基金公司+行业/主题/指数等的模式。
例如全名为汇添富中证主要消费ETF
的基金,代表汇添富公司发行的跟踪中证主要消费指数的etf基金,通常提到的关键词是汇添富 消费ETF
。
也就是说,通常会是在百度里搜索关键词汇添富 消费ETF
,而不是汇添富中证主要消费ETF
。
那类似这样的只输入基金的关键词,还能提取到正确的代码吗?我们来看看
最终效果还是挺满意的。
3)经过测试使用,能够找对大部分的基金代码。但是也因为算法的局限,有可能少部分会提取不到,但基本已经够用了。
如果请求次数太多太频繁,可能提取不到百度的搜索结果。
如果百度搜索到的代码,出现的次数频率相同的情况,提取的代码就可能会不完整或者有误。
再比如搜索的关键词可能会对应多只基金,那么可能会存在不一致的问题。
小结
我们的需求是:找到基金对应的代码
方法思路:
-
提取百度搜索结果的标题 -
提取标题中的代码 -
统计都有哪些出现过、出现的次数频率 -
将出现次数最高的作为基金的代码。
总体而已,这个方法效率方面一般,但是只要控制好网页请求的频率,代码提取正确率还是蛮不错的。
对今天这个实例感兴趣的话,可以在微信公号内回复「代码」获取vba文件,或者点击这里查看进行试用吧~~
微信公众号:yhjbox(永恒君的百宝箱)
个人博客:www.yhjbox.com
转载请注明:永恒君的百宝箱 » Excel VBA 实例(40)- 一键快速查询基金代码