先看结果,这个是做好的演示视频和样本数据:
提取码:1234
第一步,选择数据源。基金方面,经过前期收集资料,发现“天天基金”网数据比较全,能满足基本需求,而且网上其余的抓取好像都是在用天天基金的数据源,所以也打算使用天天基金作为抓取数据源。
经初步浏览天天基金的网站,发现大概可以值得抓取的有这么几项,分别附上接口:
其中,后三者的接口是通过都是分析请求得来的,返回的都是纯文本html数据,只有第一个实时行情是正常的网页,采用的方法是返回网页源代码然后用正则表达式匹配。
第二步,代码实现。因为抓取的数据源只有一个,而且返回的也是比较干净的数据,因此网抓部分的代码实现并不复杂。但是在抓取的时候,发现天天基金网的内部使用的应该是UTF-8编码,一开始使用更新的Winhttp对象抓取时,发现所有中文汉字字符抓取后返回的数据都变为了???,之后搜索各种解码方案,无效。最后无意间发现使用较老的xmlhttp对象发送请求,可以返回正常的中文,这个是没想到的。可能winhttp对象在使用时还会有一些转码的问题吧。
核心部分代码如下:
此外,与之前的网抓不同的是,基金的网抓中涉及到翻页获取数据的情况。目前采用的方案就是通过for循环的嵌套实现,在外层for循环中首先使用一次请求及正则表达式匹配,获取每类基金数据的总页数。之后内层循环再从不同页之间循环访问。
文章为作者独立观点,不代表股票交易接口观点