
这个问题不算麻烦,中午休息的时间简单调试了一下。我把步骤、代码和一个月的数据 demo 贴上,希望题主有一定的基础,然后能自己把需要的所有数据跑出来。
最后给出的完整代码修改起止日期以后应该是能直接使用的。我中间有短暂地无法访问这个网站,所以在运行的时候最好不要一次跑太长的日期跨度,最好是 3~6 个月的数据这样跑吧。
我们由内向外地来看待这个问题,想要获取三年的历史数据,自然要从获取某一天入手,然后再批量化地获取很多天的数据。获取到数据以后为了方便后续处理,我们可以将其保存到一个 excel 的表格里面。
所以我们要做的就是请求页面-解析页面-保存数据,相应用到的库分别是:
Python3
requests
beautifulsoup
xlwt
(上面三个库在装完 Python3 后都可以直接用 pip install 命令安装)
网页不复杂,也不需要模拟登陆,下面简单分析一下。
这个页面里没有找到我们需要的数据,观察以后发现中间的表格部分写在一个<iframe>标签里,打开这个链接,跳转到表格页面。
随便修改一个日期,观察浏览器的请求情况。如图。
可以看到,浏览器用一个 post 方法,提交的数据是日期和页数。这个过程就很简单了。
就不再一一解释和截图了。
获取到页面源码以后我们要对页面进行解析,抽取出中间需要的表格部分。
再将其保存到 Excel 里面。
结果:
这样就可以完整获取某一天的数据了,然后我们需要获取更多的数据,只需要修改 post 数据时的 date 就可以了。
我们将指定日期间的日期生成一个列表。我用的是这里的方法
。
得到日期列表以后在上面的代码中再加一层循环就好。
最终代码:
使用的时候直接修改起止日期就好了。
2014-01 和 2014-06 的数据。
over
