最佳实践:Power BI应用实战:批量爬取网页数据

优采云 发布时间: 2020-08-30 07:29

  Power BI应用实战:批量爬取网页数据

  前面介绍PowerBI数据获取的时侯,曾举了一个从网页中获取数据的事例,但当时只是爬取了其中一页数据,这篇文章来介绍怎样用PowerBI批量采集多个网页的数据。

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

  下面是详尽操作步骤:

  (一)分析网址结构

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

  

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

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

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

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

  

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

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

  点击确定后,发现下来好多表,

  

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

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

  

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

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

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

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

  这是最重要的一步。

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

  (p as number) as table =>

  

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

  (Number.ToText(p))

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

  "/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,尝试着抓取你感兴趣的网站数据吧。

  公众号:PowerBI星球

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线