我们在进行财务分析时,偶尔需要从某些网站上获取数据,这个过程中比较常用的工具是Excel的在线数据抓取模块——配合POWER QUERY的定时刷新设置可以更快速地更新数据。

下面,以从某汽车销量统计网站取数为例,介绍使用EXCEL抓取多页表格数据的具体操作步骤如下(软件版本:OFFICE365):

某网站汽车销量排行榜
网页链接样式为:“https://xxxx/x-1.html、https://xxxx/x-2.html、https://xxxx/x-3.html”等,其中“1、2、3”为页码,可以用通配符匹配。
第一步:选择“数据”-“自网站”。

第二步:选择“高级”,将网页地址“https://xxxx/x-1.html”粘贴入URL框。

第三步,选择一个合适的表格样式,点击“转换数据”。

第四步,点击“高级编辑器”,更改自动生成的代码。在代码最前方加入“(n as number) as table =>”,把页码部分替换为代码“"& Number.ToText(n) &"”。

完成代码示例如下:
(n as number) as table =>
let
源=Web.BrowserContents("https://xxxx/x-"& Number.ToText(n) &".html"),
#"从 Html 中提取的表" = Html.Table(源, {{"Column1", "TABLE.xl-table-def.xl-table-a > * > TR > :nth-child(1)"}, {"Column2", "TABLE.xl-table-def.xl-table-a > * > TR > :nth-child(2)"}, {"Column3", "TABLE.xl-table-def.xl-table-a > * > TR > :nth-child(3)"}, {"Column4", "TABLE.xl-table-def.xl-table-a > * > TR > :nth-child(4)"}, {"Column5", "TABLE.xl-table-def.xl-table-a > * > TR > :nth-child(5)"}, {"Column6", "TABLE.xl-table-def.xl-table-a > * > TR > :nth-child(6)"}}, [RowSelector="TABLE.xl-table-def.xl-table-a > * > TR"]),
提升的标题 = Table.PromoteHeaders(#"从 Html 中提取的表", [PromoteAllScalars=true]),
更改的类型 = Table.TransformColumnTypes(提升的标题,{{"排名", Int64.Type}, {"车型", type text}, {"销量", Int64.Type}, {"厂商", type text}, {"售价(万元)", type text}, {"车型相关", type text}})in
更改的类型
加粗部分为代码修改部分。
第五步,新建空查询,输入“={1,25}”。注意,部分OFFICE版本不能展开数组,需要手动输入全部页码数字。

第六步,选中查询,点击“到表”。

第七步,选择查询,在“添加列”中选择“调用自定义函数”。

第八步,展开查询结果。


第九步,调整标题名称,删除多余列。

第十步,关闭并上载。

第十一步,插入透视表。

第十二步,调整透视表格式及排序。
