最近,有同学问我。
我不想写代码,如何快速爬取几个数据量不太大的网页?
这个需求,估计大家很多时候都会遇到,比如,你想爬取秒杀页面的商品信息进行对比;你想爬取国家统计局官网发布的你感兴趣的数据;等等。
既然说到这里,我就简单的介绍一下网络爬虫。网络爬虫的主要目的是爬取互联网上的网页。你可以把互联网中的每一个网页想象成一个点,那么整个互联网将是彼此连通的。是不是很像我们大学学过的图论?如果从任何一个网页出发,在时间资源允许的情况下,使用广度优先算法(BFS)或者深度优先算法(DFS)是可以爬完整个互联网的。对这两种算法不太熟悉的同学可以去背书了。
下面以比较流行的 Scrapy 架构图为例,流线为数据流向。
看了这幅图,是不是对一般的爬虫有了大致的了解了。
专业的网络爬虫(比如百度/谷歌的爬虫)为了节约资源和时间,因此,设计是相当复杂的。这些爬虫一般是基于分布式集群构建的,有些机子负责调度,有些机子负责下载,有些机子专门基于网页进行分析,等等。并非简单的用 BFS/DFS 就能解决的,比如,我们以调度器为例,它就需要来管理下载优先级,当引擎发送过来 Request 请求,就需要按照优先级进行整理排列,入队,当引擎需要时,交还给引擎。
虽然关于各种语言的爬虫框架很多,要是用这些框架来爬这点数据,确实有点大材小用了,