今日目标:
学习用Excel抓取网页数据
昨天,有个女学员提问:
大致意思是这样的:
1- 女,文科生,大三没什么课
2- 感觉Python是潮流,不学就落伍了
3- 想学Python,从哪里开始?
很明显,朋友圈的里的python广告看多了。
想学习数据爬取,何用python?用Excel就可以了。
Excel从2016以后的版本,就内置了强大的数据处理神器Power Query,可以直接在Excel里,实现数据爬取。
今天给大家介绍两种方法:
第1种方法,是方法1。
第2种方法,是方法2。
怎么样?厉害吧?
两种方法的区别,主要看网页的结构。
如果网页中的数据,使用的是table标签,那么直接导入web网页就可以了。
比如,我们经常在豆瓣上,看即将上映的电影列表,这个就是一个table标签的网页。
网页的地址是:https://movie.douban.com/coming
使用Excel抓取数据的步骤是这样的。
在「数据」选项卡中,点击「自其它源」「自网站」。
在弹出的对话框中,粘贴上面的网址,点击「确定」
这个时候,你会看到的就是Power Query的界面啦。
在窗口左侧的列表中,选择table0,右侧就可以看到Power Query自动识别出来的表格数据了。
点击「加载」,就可以把网页数据抓取到表格中去了。
使用Power Query的好处是,如果网页中的数据更新了,在导入结果上,右键「刷新」就可以同步数据。
这里说的是网页中包含table标签的数据。
什么意思呢?就是网页中的数据,本来就是一个表格结构,这个方法和你直接复制网页数据,粘贴到表格里,是一样的意思。
对于那些非table标签的网页数据,这个方法不好使。
怎么识别一个网页是不是table标签呢?很简单,选择任意一个数据,然后在网页中点击右键,选择「检查」。
然后你会看到网页的源代码,你不需要懂,只要看到当前高亮的代码中,包含以下任意的标签,就表示网页用了table标签,可以用这个方法。
如果没有的话,那就继续看方法2。
方法2
使用table标签保存数据,已经是非常古老的网页技术了。现在的网页大都使用div、span等格式更丰富、更灵活的标签,来呈现数据。
这种网页就不好直接导入了。
比如我常看的「知乎」,他们的网页里一个table都没有。
用方法1导入到Power query里,左侧没有table数据,就不好抓取了。
那怎么办呢?
这个时候就要直接抓取数据包了。
本质上,网页中的数据都会包打包成一个数据包,发送个网页后,网页再读取数据包进行渲染。
这个数据包常用的格式是JSON,那么我们只要把JSON数据包抓取下来,也可以实现网页数据抓取。
不管他,干就完事儿了。
「下方高能预警」,如果你看不懂,可以直接跳过看方法3。
操作步骤
我们以知乎搜索Excel问题为例。
1- 识别数据包
首先,在页面中点击右键,选择「检查」。
然后,右侧会出现网页调试窗口,然后点击「network」「xhr」,在这里面可以看到所有的数据传输记录。
尝试着在知乎中搜索「Excel」,就可以看到数据的传输了。
向下滚动页面,当右侧列表汇总看到了「search_v3?t=」时,抓住它,这个就是我们需要的数据包。
2- 复制数据包链接
然后在这个数据包上,点击右键选择「copy link address」复制数据包的链接。
3- 导入json数据
接下来就进入到了Excel操作界面,在「数据」选项卡中,点击「自其它源」「自网站」,粘贴数据包的链接。
点击确定后,就进入到了Power Query的界面。
数据包的结构,像是我们的「文件夹」一样,数据按照类别分别保存在不同的「子文件夹」中。
打开数据包「文件夹」的方式,就是在数据上,点击右键选择「深化」。
在数据上依次点击「深化」就可以找到我们的数据了。
4- 批量读取数据
最后,再写几个简单的函数,把「子文件」数据批量的读取出来。
在「主页」选项卡中,点击「高级编辑器」打开函数编辑窗口。
编写几个简单的函数,我们就完成了数据的抓取。
最终抓取的数据如下:
高级玩法
当然,如果你比较熟悉Power Query的话,可以在上面的基础上,再加入参数,可以根据表格中的「搜索词」,实时的搜索知乎文章,一键刷新统计结果。
方法3
专业的事情交给专业的工具来做。
Power Query是专业的数据整理插件,不是数据爬取软件,所以方法2,你看着可能会有些吃力。
在爬虫这个领域,还是要用专业软件,比如「后羿采集器」。点击几下按钮,就可以轻松完成数据抓取。。
操作步骤
打开「后羿采集器」,在「网址」栏中粘贴入知乎的搜索网址,如:
然后点击「智能采集」,接着后羿采集器会自动识别网页中的数据,等待识别完成。
识别完成后,点击「开始采集」,数据就开始爬取了。
爬取完成后,在弹出的对话框里,点击「导出」,数据就自动以表格的形式保存下来了。
总结
专业的事情,交给专业的工具来做。
1- 简单的表格类网页,使用Power Query抓取,举手之劳。
2- 复杂的网页,使用爬虫软件,也是点点按钮的事情。
关于Power Query和爬虫,我有两篇更为详细的文章,推荐给你,点击图片直达。
后台回复知乎、爬虫,你会有意外收获哦!
考考你
python可以爬虫,但不是挖能的
Excel也可以爬虫,但是没有掌握高级的Power query技巧
最简单爬虫,还是使用爬虫软件
最后出一个小测试题吧!
我在国家统计局的网站中,找到了2010年的人口普查数据。
网址是:http://www.stats.gov.cn/tjsj/pcsj/rkpc/6rp/indexch.htm
这是一个典型的table类网页。请使用Power Query功能,把这个数据抓取到表格中。
做完了,可以微博@拉登Dony,来at我交个作业。
好了今晚就到这里,下课!
我是拉小登,一个会设计表格的Excel老师
= = 推荐文章 = =
【建议收藏】教你一个最最最最最最简单的爬虫方法
运营:99%的Excel使用者都不知道,Excel还可以做搜索引擎,太神奇了