最近想做一个关于用一些指数基金与余额宝组成的简单 风险-无风险 投资组合的实验计算,发现通达信之类的行情软件并没有提供完整的余额宝收益信息,如通达信仅有年化收益率的数据,并没有万份收益的数据。因此考虑利用 Python 做一个小的爬虫程序获取相关数据。
数据来源
简单的搜索了一下,发现网上推荐的网站多数指向一个叫理财收益网 的网站,这里的较为详细的数据,不过这个网站的数据仅仅提供到2016年的12月底,17年的1月到2月并没有,所以不怎么符合条件。
然后再看了一下天天基金网 ,进入余额宝页面,在走势图旁边有一个 历史收益 的栏目,点击进去,可以看到有 历史净值 的数据,而且数据从 2013-5-30 到最近一天的数据,这里的数据比较适合,因此就选择从这里爬取数据。
网页分析
在编写爬虫程序之前,我们先分析一下这个网页。
我们可以看到,这张表格下面有一个分页栏,点击下面的页数切换数据。到这里,一般思路是先看看能不能找到这个网页的数据更新的 api,如果有,就可以直接通过拼接 url 传入参数来获取数据,如果不能的话,那可以考虑使用 selenium 之类的工具模拟点击实现。
我们先用 chrome 浏览器自带的开发者工具,尝试是否能够获取的数据更新的 api 。比较幸运,这个网站是可以获取到更新数据的 url 的。url 如下:
http://fund.eastmoney.com/f10/F10DataApi.aspx?type=lsjz&code=000198&page=1&per=20
然后这个 url 的返回值如下:
var apidata=
{ content:"<table class='w782 comm lsjz'><thead><tr><th class='first'>净值日期</th><th>每万份收益</th><th>7日年化收益率(%)</th><th>申购状态</th><th>赎回状态</th><th class='tor last'>分红送配</th></tr></thead><tbody><tr><td>2017-03-17</td><td class='tor bold'>1.0213</td><td class='tor bold'>3.7480%</td><td>开放申购</td><td>开放赎回</td><td class='red unbold'></td></tr><tr><td>2017-03-16</td><td class='tor bold'>1.0147</td><td class='tor bold'>3.7360%</td><td>开放申购</td><td>开放赎回</td><td class='red unbold'></td></tr><tr><td>2017-03-15</td><td class='tor bold'>1.0082</td><td class='tor bold'>3.7230%</td><td>开放申购</td><td>开放赎回</td><td class=