网络爬虫(web crawler, spider)就是一个按照一定的规则在网络上爬行的机器人,在爬行的时候搜集一些信息。
爬虫由两部分构成,一是下载web页面,有很多问题需要解决,比如如何最大限度地利用本地带宽,如何针对不同的web站点进行调试以减轻对方服务器的负载,二是对获取的页面的分析,这也是一个复杂的过程。
scrapy是用python写的一个web crawler框架,简单轻巧,并且非常方便,整体架构图如下:
绿线是数据流向,首先从URL开始,Scheduler会将其交给Downloader进行下载,下载之后会交给Spiders进行分析,分析的结果有两类,一类是要继续抓取的链接,会交给Scheduler,另一种是需要保存的数据,它们则被送到 Item Pipeline ,那是对数据进行后期处理(详细分析、过滤、存储等)的地方。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。
scrapy使用了Twisted这个异步网络库来处理网络通信。