Power Query 获取东方财富网个股K线数据

前面我们讲过东方财富网获取全部实时股票数据,今天来做一个个股的K线数据获取 。
获取个股数据首先要有股票代码,然后根据代码来获取,这个和我们浏览网页的顺序差不多,比如我们先找民航机场板块:

Power Query 获取东方财富网个股K线数据

文章插图
 
然后进到白云机场个股:
Power Query 获取东方财富网个股K线数据

文章插图
 
然后放大K线到全屏:
Power Query 获取东方财富网个股K线数据

文章插图
 
我们抓取数据也要按照这个过程来做网站分析 。
网站分析板块页面的分析:
Power Query 获取东方财富网个股K线数据

文章插图
 
民航机场板块共有13条数据,我们筛选jquery之后找一下对应的数据,然后找到对应的真实URL:
Power Query 获取东方财富网个股K线数据

文章插图
 
我们只要股票代码和名称,所以这个过程应该比较简单 。
接下来看个股K线全屏的页面,检查中筛选kl:
Power Query 获取东方财富网个股K线数据

文章插图
 
K线数据肯定比较多,通常都有几千行,也要找到真实的URL:
Power Query 获取东方财富网个股K线数据

文章插图
 
这个URL我们要来分析一下:
Power Query 获取东方财富网个股K线数据

文章插图
 
后面的一大串字符,格式化显示应该是这样的
Fields1、2都是数据的名称,也就是我们抓取的数据的列名称,这个我们用别的方法来找,先不管他,beg、end是开始与结束时间,估计这个20500101就对应昨天,开始都默认是0 。最关键的是secid这个是股票代码,我们要抓取个股数据,就要修改这个值,这个值有两部分组成小数点分割,前面的1代表沪市,如果是0代表深市,后面就是白云机场的股票代码 。
接下来说数据的名称如何对应:
Power Query 获取东方财富网个股K线数据

文章插图
 
K线图中有这样一个数据块,里面的汉字部分就对应了我们抓取的数据的列名称,我们来找这个数据块在源码中的位置:
Power Query 获取东方财富网个股K线数据

文章插图
 
找到这个popfloatwin浮动窗口,复制这个element:
Power Query 获取东方财富网个股K线数据

文章插图
 
到Power Query中建立空白查询,粘贴复制的内容:
Power Query 获取东方财富网个股K线数据

文章插图
 
是不是看着头晕,没关系,找到分析,选xml:
Power Query 获取东方财富网个股K线数据

文章插图
 
会自动解析:
Power Query 获取东方财富网个股K线数据

文章插图
 
展开后备用 。
抓取数据首先抓取民航机场板块的股票名称和代码:
先去复制真实的URL,然后从web获取数据:
Power Query 获取东方财富网个股K线数据

文章插图
 
这里要直接在公式栏里输入三个函数来解析jsoncallback:
Json.Document(Text.BetweenDelimiters(Text.FromBinary(Web.Contents(真实URL)),"(",")"))然后就是展开,我们不需要其他的内容,只要股票名称和代码:
Power Query 获取东方财富网个股K线数据

文章插图
 
这个查询放这里备用 。
然后是个股K线数据抓取:
同样的直接复制对应的真实URL,然后抓取,方法与上面的方法一致:
Power Query 获取东方财富网个股K线数据

文章插图
 
然后展开,整理下格式,至于数据的表头,我们可以在抓取全部数据后统一更改 。
我们用这个查询创建一个函数:
Power Query 获取东方财富网个股K线数据

文章插图
 
主要就是修改这个secid=号后面的内容,这里涉及到沪深两市的数据抓取,直接判断id的第一个符来修改小数点前面的部分,也可以,但是我比较懒,我就把这个函数直接复制一份,做一个0.的函数,然后在调用函数的时候用try..otherwise试着用第一个函数如果出错就用第二个函数,这样就保证两市数据都能抓出来了 。
Power Query 获取东方财富网个股K线数据


推荐阅读