excel抓取网页数据(如何用PowerBI批量采集多个网页的数据(图))
优采云 发布时间: 2021-09-10 15:12excel抓取网页数据(如何用PowerBI批量采集多个网页的数据(图))
之前介绍PowerBI数据采集的时候,举了一个从网页中获取数据的例子,但是当时只抓取了一页数据。这个文章介绍了如何使用PowerBI批量处理采集多个网页数据。 (Excel中的Power查询也可以同样操作)
本文以智联招聘网站为例,采集posts上海职位信息。
详细步骤如下:
(一)分析网址结构
打开智联招聘网站,搜索上海工作地点数据,
下拉页面到底部,找到显示页码的地方,点击前三页,网址如下,
%e4%b8%8a%e6%b5%b7&sm=0&sg=fe782ca83bfa4b018d27de559d0a5db0&p=1
%e4%b8%8a%e6%b5%b7&sm=0&sg=fe782ca83bfa4b018d27de559d0a5db0&p=2
%e4%b8%8a%e6%b5%b7&sm=0&sg=fe782ca83bfa4b018d27de559d0a5db0&p=3
可以看出最后一个数字是页码的ID,是控制页面数据的变量。
(二)使用PowerBI采集首页数据
打开PowerBI Desktop,从网页中获取数据,在弹出的窗口中选择【高级】,根据上面分析的URL结构,在第一行输入除最后一个页码ID外的URL,页面数字到第二行。
从URL预览中可以看到,上面两行的URL已经自动合并在一起了;这里的单独输入只是为了更清楚地区分页码变量。其实直接输入完整网址也是可以的。
(如果页码变量不是最后一位,而是在中间,则应分三行输入网址)
点击确定后,出来了很多表,
从这里我们可以看到智联招聘网站上的每一个职位信息都是一个表格,不用管它,任意选择一个表格,比如勾选Table0,点击Edit进入Power Query编辑器。
在PQ编辑器中,直接删除[source]后面的所有步骤,然后展开数据,删除前面没有的几列数据。
第一页的数据是采集这里。然后把这个页面的数据整理一下,删除无用信息,添加字段名称,可以看到一页有60条招聘信息。
这里处理完第一页的数据后,再进行采集其他页面时,排序后的数据结构与第一页的数据结构相同。 采集的数据可以直接使用;它没有在这里排序。没关系,你可以等到采集所有网页数据整理在一起。
如果你想批量抓取网页数据,为了节省时间,可以直接跳到下一步,不用整理第一页的数据。
(三)根据页码参数设置自定义函数
这是最重要的一步。
刚才第一页数据的PQ编辑器窗口,打开【高级编辑器】,在let前输入:
(p 作为数字) 作为表格 =>
并将第一行URL中&后的“1”改成let后(这是第二步使用高级选项分两行输入URL的好处):
(Number.ToText(p))
更改后,[Source] 的 URL 变为:
";sm=0&sg=fe782ca83bfa4b018d27de559d0a5db0&p="&(Number.ToText(p)))),
确定后,刚才第一页数据的查询窗口直接变成了自定义函数的输入参数窗口,Table0表格也变成了函数的样式。为了更直观,将此函数重命名为 Data_Zhaopin。
自定义函数到这里就完成了,p是函数的变量,用来控制页码,只要输入一个数字,比如7,就会抓取第7页的数据,
输入参数一次只能抓取一个网页。如果要批量抓取,则需要以下步骤。
(四)批量调用自定义函数
首先使用空查询创建编号规则。如果要抓取前100页的数据,创建一个1到100的序列,在空查询中输入
={1..100}
按 Enter 生成 1 到 100 的序列,然后将其转换为表格。 gif操作图如下:
然后调用自定义函数,
在弹出的窗口中,点击【函数查询】下拉框,选择你刚刚创建的自定义函数Data_Zhaopin,其他的就默认了。
点击确定开始批量抓取网页,因为100页数据比较大,需要5分钟左右。这也是我第二步预组织数据的结果,导致爬行速度变慢。展开这张表,就是这100页的数据,
至此,100页兆联招聘信息批量抓取完成。上面的步骤好像很多。其实掌握之后,10分钟左右就可以搞定。最大块的时间仍然是比较数据捕获过程的最后一步。很费时间。
网页上的数据不断更新。完成以上步骤后,在PQ中点击Refresh,就可以随时一键提取网站实时数据,一次搞定,终身受益!
以上主要使用PowerBI中的Power Query功能,同样的操作可以在可以使用PQ功能的Excel中进行。
当然,PowerBI 不是专业的爬虫工具。如果网页比较复杂或者有反爬虫机制,还是要使用专业的工具,比如R或者Python。使用PowerBI批量抓取某条网站数据之前,先尝试采集一页,如果可以得到采集,则使用上面的步骤,如果采集不可用,则无需延迟时间.
现在打开 PowerBI 或 Excel 并尝试获取您感兴趣的网站data。