今天看啥  ›  专栏  ›  PowerBI星球

PowerBI/Excel批量爬取网页数据超详细流程

PowerBI星球  · 简书  ·  · 2018-04-01 11:40

前面介绍PowerBI数据获取的时候,曾举了一个从网页中获取数据的例子,但当时只是爬取了其中一页数据,这篇文章来介绍如何用PowerBI批量采集多个网页的数据。(Excel中的Power query可以同样操作)

本文以智联招聘网站为例,采集工作地点在上海的职位发布信息。

下面是详细操作步骤:

(一)分析网址结构

打开智联招聘网站,搜索工作地点在上海的数据,

下拉页面到最下面,找到显示页码的地方,点击前三页,网址分别如下,

http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%e4%b8%8a%e6%b5%b7&sm=0&sg=fe782ca83bfa4b018d27de559d0a5db0&p=1

http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%e4%b8%8a%e6%b5%b7&sm=0&sg=fe782ca83bfa4b018d27de559d0a5db0&p=2

http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%e4%b8%8a%e6%b5%b7&sm=0&sg=fe782ca83bfa4b018d27de559d0a5db0&p=3

可以看出最后一个数字就是页码的ID,是控制分页数据的变量。

(二)使用PowerBI采集第一页的数据

打开PowerBI Desktop,从网页获取数据,从弹出的窗口中选择【高级】,根据上面分析的网址结构,把除了最后一个页码ID的网址输入第一行,页码输入第二行,

从URL预览中可以看出,已经自动把上面两行的网址合并到一起;这里分开输入只是为了后面更清晰的区分页码变量,其实直接输入全网址也是一样可以操作的。

(如果页码变量不是最后一位,而是在中间,应该分三行输入网址)

点击确定后,发现出来很多表,

从这里可以看出,智联招聘网站上每一条招聘信息都是一个表格,不用管它,任意选择一个表格,比如勾选Table0,点击编辑进入Power Query编辑器。

在PQ编辑器中直接删除掉【源】之后的所有步骤,然后展开数据,并把前面没有的几列数据删除。

这样第一页的数据就采集过来了。然后对这一页的数据进行整理,删除掉无用信息,添加字段名,可以看出一页包含60条招聘信息。

这里整理好第一页数据以后,下面进行采集其他页面时,数据结构都会和第一页整理后的数据结构一致,采集的数据可以直接拿来用;这里不整理也没关系,可以等到采集所有网页数据后一起整理。

如果要大批量的抓取网页数据,为了节省时间,对第一页的数据可以先不整理,直接进入下一步。

(三)根据页码参数设置自定义函数

这是最重要的一步。

还是刚才第一页数据的PQ编辑器窗口,打开【高级编辑器】,在let前输入:

(p as number) as table =>

并把let后面第一行的网址中,&后面的"1"改为(这就是第二步使用高级选项分两行输入网址的好处):

(Number.ToText(p))

更改后【源】的网址变为:

"http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%e4%b8%8a%e6%b5%b7&sm=0&sg=fe782ca83bfa4b018d27de559d0a5db0&p="&(Number.ToText(p)))),

确定以后,刚才第一页数据的查询窗口直接变成了自定义函数的输入参数窗口,Table0表格也变成了函数的样式。为了更直观,把这个函数重命名为Data_Zhaopin.

到这里自定义函数完成,p是该函数的变量,用来控制页码,随便输入一个数字,比如7,将抓取第7页的数据,

输入参数只能一次抓取一个网页,要想批量抓取,还需要下面这一步。

(四)批量调用自定义函数

首先使用空查询建立一个数字序列,如果想抓取前100页的数据,就建立从1到100的序列,在空查询中输入

={1..100}

回车就生成了从1到100的序列,然后转为表格。gif操作图如下:

然后调用自定义函数,

在弹出的窗口中点击【功能查询】下拉框,选择刚才建立的自定义函数Data_Zhaopin,其他都按默认就行,

点击确定,就开始批量抓取网页了,因为100页数据比较多,耗时5分钟左右,这也是我第二步提前数据整理造成的后果,导致抓取比较慢。展开这一个表格,就是这100页的数据,

至此,批量抓取智联招聘100页的信息完成,上面的步骤看起来很多,实际上熟练掌握以后,10分钟左右就可以搞定,最大块的时间还是最后一步进行抓取数据的过程比较耗时。

网页的数据是不断更新的,在操作完以上的步骤之后,在PQ中点击刷新,可以随时一键提取网站实时的数据,一次做好,终生受益!

以上主要使用的是PowerBI中的Power Query功能,在可以使用PQ功能的Excel中也是可以同样操作的。

当然PowerBI并不是专业的爬取工具,如果网页比较复杂或者有防爬机制,还是得用专业的工具,比如R或者Python。在用PowerBI批量抓取某网站数据之前,先尝试着采集一页试试,如果可以采集到,再使用以上的步骤,如果采集不到,就不用再耽误工夫了。

现在就打开PowerBI或者Excel,尝试着抓取你感兴趣的网站数据吧。

微信公众号:PowerBI星球




原文地址:访问原文地址
快照地址: 访问文章快照