之前写了篇Python批量爬取网页数据的文章,后来发现Excel随着版本的迭代,已经完全支持多页面抓取数据了,不用撸代码,点点鼠标就能抓取数据,让我们一起看看吧~
网页解析
在抓取数据之前,先对网页进行一下解析,下图中是豆瓣TOP250初始页面,拉到最底部可以发现一共有10个页面,每个页面25部电影,一共250部电影。
我们依次获取前三个页面的网址可以发现它们之间的规律,每个网址除了中间的数字,其它地方都是一样的,数字从0/25/50,以25递增(每个页面的电影数),一共10个页面。
发现规律之后,我们将10个页面之间的数字存储在一张表中备用,下图A列所示,留存备用。
数据抓取
Excel2016及其以上版本内嵌了从Web批量抓取的功能(“数据”—“新建查询”—“从其它源”—“从Web”),案例演示的版本未达到,所以我下载了一个Power BI Desktop(Excel延伸产品),免费安装免费使用,效果同Excel,不用担心不会使用,会用Excel就会操作。
打开Power BI Desktop或者Excel,点击【获取数据】—【Web】(Excel2016及以上版本在“数据”—“新建查询”—“从其它源”—“从Web”)
界面设置:
点击高级之后,URL部分,点击“添加部件”,一共三个框,将豆瓣TOP250首页网址以数字0为分隔,分成三段,分别放置于三个框内,如下图所示:
可以发现,在URL预览框内会自动显示完整的网址,点击确定,完成设置。
导航器界面
之后程序会进入抓取数据状态,稍等会儿,跳出“导航器”界面,左侧有一张表“表1”,勾选之后,右侧展示表明细数据,可以发现就是豆瓣TOP250的首页面的25部电影;
一共有抓取了9个字段,包括序列号、电影名、评分、评价人次、电影简介等信息,有部分列是不需要的,我们进入Power Query界面进行删除,点击底部的“转换数据”进入Power Query界面。
Power Query数据编辑
进入Power Query界面之后,只保留序号、评分、电影名、评价人次四列,其余列皆做删除处理,删除之后,分别对四列数据进行重命名。动图展示如下:
设置自定义函数
依次点击【主页】—【高级编辑器】,在弹出的界面中,在字母“let”前输入以下代码:
(p as number) as table =>
接着将第三行代码中的数字【“0”】替换为【(Number.ToText(p))】,如下图所示:
(Number.ToText(p))
完成以上两步的设置后,点击“确定”,可以发现原先的表1变成了函数样式,fx 表1,其中p是函数参数,控制页码,如输入25,即可获得TOP250第二个页码电影列表的数据。
批量调用,批量抓取数据
接着点击【新建源】—【Excel】,选择第一步留存备用的Excel表格,导入之后,点击【添加列】—【调用自定义函数】,下拉功能查询选择【表1】,点击确定。
界面会弹出一个警告框【要求与数据隐私有关的信息】,点击【继续】,勾选【忽略此文件的隐私级别检查。...】,点击【保存】之后,程序进入页面抓取阶段。
由于抓取页面较多,程序需要运行一段时间,十几秒之后,数据抓取完毕,一共十个页面,存储在10张表中,点击字段【表1】,勾选【展开】,TOP250信息皆展示在表中。
此时数据还在Power Query中,点击【开始】—【关闭并上载】将数据加载到Excel当中,完成数据爬取。
小结
不会撸代码的我们,曾对数据爬取望而生畏,随着ExcelBI工具的丰富,数据抓取也将变得简单化,快去尝试下吧~
如果你没有安装高版本的Excel,不妨试着安装下Power BI Desktop,十分方便,不用注册,打开就可以使用,应用商店Microsoft store搜Power BI Desktop下载即可。