Power Query 抓取股票信息的几个问题
女神节股市很不平静,数据可以下载下来留作纪念。Power Query可以用来抓取股票信息,就是要注意几个细节:
首先找到你需要的数据的网站,证卷之星、同花顺、东方财富、新浪财经等等,很多网站都有行情中心,提供当天的股票行情信息以及历史信息查询。这些信息都是公开的,匿名访问就可以下载,但是有个问题,网站会有反爬机制,访问过于频繁就会被断开连接,或者一次性抓取数据过多也会被断开连接。
接下来就是要看哪些网站能抓,哪些不能抓?
第一种:提供具体网页的静态网址的可以抓
第二种:地址栏里只提供主站地址,但是能够找到具体页面网址的
张两种网址应该都可以抓取,第二种中有的也不行,因为后面的Request中有网站下发的随机码,没有任何规律,就不能抓。
还有就是如何延迟抓取,模仿人类的速度
Power Query中提供了一个可以使程序延迟运行的M函数Function.InvokeAfter,这个函数有两个参数。前面是函数,后面是延迟的时间间隔。
这个函数的用法与其他函数有些不同:
函数里面需要用"="来转一下。右下角刷新时就会有明显的延迟。
把这个函数用到抓取过程中,写成这个样子
最后就是页数多时,要分开抓取
测试了几个网站,信息抓取的时候,如果页数过多,就会被拒绝,一般来说30页左右,应该可以接受,大家也可以根据实际情况自己试一试。
这个是抓取了5页的例子。全部A股的股票行情信息,有2700多行,如果20行一页的话,也要有100多页,分成5次,就能抓取完了。
抓取下来的信息,最好是转成本地文件,要不然刷新数据是特别慢,还容易被网站拒绝访问,上图是我抓取下来的3月8日的A股股票信息,导入到Power BI里做的个可视化图表。