本节要点: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=
    32、Power Query-利用自定义函数获取指定页数数据 - 图2

    可以看到这里的数据不止一页,我们如何去动态获取这些记录。
    我们从这个网址上分析得出,这个页码是根据下图进行动态变动:
    32、Power Query-利用自定义函数获取指定页数数据 - 图3

    比如我们将这个“1”改为“2”。
    32、Power Query-利用自定义函数获取指定页数数据 - 图4

    即显示了第二页的所有20条记录。
    32、Power Query-利用自定义函数获取指定页数数据 - 图5

    接下来的重点就是如何去动态构造这些页码呢?
    答案自然存在于我们的“高级编辑器”里面。
    32、Power Query-利用自定义函数获取指定页数数据 - 图6

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


    我们简单看一下代码结构,从“let”到“in”发现其实PQ的每一个步骤都是用一个函数来构成的,说底层一点,PQ就是由无数个函数集堆积而成的。
    “in”则是返回最后一步。
    接下来我们需要自定义函数,现在我们对这个语言还不是很熟,先依葫芦画瓢。
    32、Power Query-利用自定义函数获取指定页数数据 - 图7

    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-利用自定义函数获取指定页数数据 - 图8

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

    发现这个类型不同报错了。网址中需要的是文本型的“1”,看来是需要函数来转换,我们暂且不管。
    我们改名为“page”,从右侧可以看到,有一个步骤是“Getdata”。
    这个时候我们新建一个空查询,比如要查询前10页的数据。
    32、Power Query-利用自定义函数获取指定页数数据 - 图10

    我们的目的是要让这1~10赋值到上面的参数里面,进行获取数据源。
    它有两个要求:
    1、必须要求是文本Text;
    2、增加一列,引入这个函数;
    32、Power Query-利用自定义函数获取指定页数数据 - 图11

    使用的是“page()”这个函数(这个函数的作用就是为了提取网页的数据),把前面一列的值引入进来,即:“”。
    32、Power Query-利用自定义函数获取指定页数数据 - 图12

    得到如下结果:
    32、Power Query-利用自定义函数获取指定页数数据 - 图13

    数据源获取到了,我们扩展即可。
    插入切片器,可以进行灵活的查询。
    32、Power Query-利用自定义函数获取指定页数数据 - 图14

    缺点:速度奇慢。