最近,有同学问我。
我不想写代码,如何快速爬取几个数据量不太大的网页?
这个需求,估计大家很多时候都会遇到,比如,你想爬取秒杀页面的商品信息进行对比;你想爬取国家统计局官网发布的你感兴趣的数据;等等。
既然说到这里,我就简单的介绍一下网络爬虫。网络爬虫的主要目的是爬取互联网上的网页。你可以把互联网中的每一个网页想象成一个点,那么整个互联网将是彼此连通的。是不是很像我们大学学过的图论?如果从任何一个网页出发,在时间资源允许的情况下,使用广度优先算法(BFS)或者深度优先算法(DFS)是可以爬完整个互联网的。对这两种算法不太熟悉的同学可以去背书了。
下面以比较流行的 Scrapy 架构图为例,流线为数据流向。
看了这幅图,是不是对一般的爬虫有了大致的了解了。
专业的网络爬虫(比如百度/谷歌的爬虫)为了节约资源和时间,因此,设计是相当复杂的。这些爬虫一般是基于分布式集群构建的,有些机子负责调度,有些机子负责下载,有些机子专门基于网页进行分析,等等。并非简单的用 BFS/DFS 就能解决的,比如,我们以调度器为例,它就需要来管理下载优先级,当引擎发送过来 Request 请求,就需要按照优先级进行整理排列,入队,当引擎需要时,交还给引擎。
虽然关于各种语言的爬虫框架很多,要是用这些框架来爬这点数据,确实有点大材小用了,而且还得要编码调试,各种麻烦!!!
我发现 Chrome 商店里面有一款爬虫插件,刚好解决这个痛点,它的名字叫做 Web Scraper,目前有 22w 的用户下载。
官方网址:https://www.webscraper.io
这个爬虫操作特别简单,照着官方文档,几分钟就学会了。
我这里就说几个关键点吧。
1、启动
一般初次使用,不知道怎么打开它,用快捷键 ctrl+shift+i 打开开发者工具。
sitemaps:你所有的爬虫。
create new sitemap:创建一个新爬虫的起始地址。
2、选择器
对于一个选择器而言,就有如下几种元素,它主要作用是为爬虫分析网页的功能,提供了可视化选择的功能,如下图所示。
好了,再来细说一下,选择器内部的几个元素。
Id: 选择器的ID;
Type:要抓取内容的类型,有文本、图片以及元素集等;
Selector:选择器。点击 select 按钮可以选择我们要抓取的内容,点击 element preview 按钮可以预览选择的内容,而点击 data preview 按钮可以预览抓取的数据;
Multiple:勾选了这个按钮可以并联相同的内容;
Regex:正则表达式;
Delay:延迟。为了让页面有足够的时间加载数据;
Parent Selectors:父选择器。
有的同学可能会问,如果我要在一个页面选择多个元素,该怎么办呢?上面的提到的 Type 属性里面的 Element 就起到这个作用,如我这里。
3、关系图
我觉得这个功能特别棒,帮我们看到这个爬虫的层级关系图。
最后,就是爬取数据了,爬取后的数据还可以导出为 excel,便于你分析。
大家可以去玩一下这个爬虫插件,会帮你快速分析一些简单的数据。
就写到这里吧。