gridview ashx实现数据更新_Power BI应用实战:批量爬取网页数据

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

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

下面是详细操作步骤:

(一)分析网址结构

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

2dcfa4df81eb5ac22a171372ad9f7806.png

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

  • 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的网址输入第一行,页码输入第二行,

451f9e5ae7cb8694f79944abae992fc6.png

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

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

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

d284dfd8e5639807c07b5347c59455cd.png

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

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

5a62aabc901fc6f3dd96ca9b167ad377.gif

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

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

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

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

这是最重要的一步。

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

(p as number) as table =>

b03daf04e1484f2f574b1a670d76a575.png

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

(Number.ToText(p))

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

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

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

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

5e756c7d238160c5208d93b85f9296d5.gif

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

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

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

={1..100}

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

dd231f28d0c2fbc69aacbe3f81f4048d.gif

然后调用自定义函数,

e839f15db0d7c9fe0e1e02bcf6eaa7c9.png

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

5c3ad3533fdc9e147b2cf313a78cac62.png

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

e31b24e7b4067b375bacff6e02294f1b.gif

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

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

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

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

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

公众号:PowerBI星球

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值