32、Power Query-利用自定义函数获取指定页数数据

本节要点:Power Query-利用自定义函数获取指定页数数据

我们前面不是有一节已经讲过如何获取网页的数据了么?

http://blog.csdn.net/zhongguomao/article/details/53908101

32、Power Query-利用自定义函数获取指定页数数据_第1张图片

细心的朋友或许已经发现,之前获取的网页数据比较不灵活,仅仅是当前页面的数据,若是有好多页的数据,之前的方法貌似不好使。

今天我们就简单的带大家认识一下Power Query里“M语言”的自定义函数的应用。

实例网站:http://union.mop.com/rank?pageNum=1&type=


可以看到这里的数据不止一页,我们如何去动态获取这些记录。

我们从这个网址上分析得出,这个页码是根据下图进行动态变动:


比如我们将这个“1”改为“2”。

32、Power Query-利用自定义函数获取指定页数数据_第2张图片

即显示了第二页的所有20条记录。

32、Power Query-利用自定义函数获取指定页数数据_第3张图片

接下来的重点就是如何去动态构造这些页码呢?

答案自然存在于我们的“高级编辑器”里面。

32、Power Query-利用自定义函数获取指定页数数据_第4张图片

let
    源 = Web.Page(Web.Contents("http://union.mop.com/rank?pageNum=2&type=")),
    Data0 = 源{0}[Data],
    更改的类型 = Table.TransformColumnTypes(Data0,{{"排名", Int64.Type}, {"联盟名称", type text}, {"等级", Int64.Type}, {"人口", Int64.Type}, {"声望", Int64.Type}, {"盟主", type text}})
in
    更改的类型

我们简单看一下代码结构,从“let”到“in”发现其实PQ的每一个步骤都是用一个函数来构成的,说底层一点,PQ就是由无数个函数集堆积而成的。

“in”则是返回最后一步。

接下来我们需要自定义函数,现在我们对这个语言还不是很熟,先依葫芦画瓢。

32、Power Query-利用自定义函数获取指定页数数据_第5张图片

let Getdata = (pg)=>


let
    源 = Web.Page(Web.Contents("http://union.mop.com/rank?pageNum="&pg&"&type=")),
    Data0 = 源{0}[Data],
    更改的类型 = Table.TransformColumnTypes(Data0,{{"排名", Int64.Type}, {"联盟名称", type text}, {"等级", Int64.Type}, {"人口", Int64.Type}, {"声望", Int64.Type}, {"盟主", type text}})
in
    更改的类型


in
    Getdata

我们试一下调用第一页。

32、Power Query-利用自定义函数获取指定页数数据_第6张图片

32、Power Query-利用自定义函数获取指定页数数据_第7张图片

发现这个类型不同报错了。网址中需要的是文本型的“1”,看来是需要函数来转换,我们暂且不管。

我们改名为“page”,从右侧可以看到,有一个步骤是“Getdata”。

这个时候我们新建一个空查询,比如要查询前10页的数据。

32、Power Query-利用自定义函数获取指定页数数据_第8张图片

我们的目的是要让这1~10赋值到上面的参数里面,进行获取数据源。

它有两个要求:

1、必须要求是文本Text;

2、增加一列,引入这个函数;

32、Power Query-利用自定义函数获取指定页数数据_第9张图片

使用的是“page()”这个函数(这个函数的作用就是为了提取网页的数据),把前面一列的值引入进来,即:“”。

32、Power Query-利用自定义函数获取指定页数数据_第10张图片

得到如下结果:

32、Power Query-利用自定义函数获取指定页数数据_第11张图片

数据源获取到了,我们扩展即可。

插入切片器,可以进行灵活的查询。

32、Power Query-利用自定义函数获取指定页数数据_第12张图片

缺点:速度奇慢。

你可能感兴趣的:(Power,Query,Power,Query,从实例应用到精通)