Scrapy是一个为了抓取网页数据、提取结构性数据而编写的应用框架,该框架是封装的,包含Request (异步调度和处理)、下载器(多线程的Downloader) 、解析器(Selector)和Twisted(异步处理)等。对于网站的内容爬取,其速度非常快。
Scrapy的安装
在Windows环境下,需要先安装包pypiwin32,然后安装Scrapy,输入下面的命令:
C:\> pip3 install pypiwin32
C:\> pip3 install scrapy
工作原理
网络爬虫是一种数据收集的方式,广泛用于搜索引擎、市场分析等领域。爬虫从一个或若干种子页面开始,获得种子页面上的链接,并根据需求来追踪其中的一些链接,达到遍历所有网页的目的。在抓取网页的过程中,一方面提取需要的数据信息,另外一方面从当前页面上抽取新的网页地址放入待处理队列,直到满足系统一定的停止条件。
工作流程图爬虫的基本工作流程如下:
(1)确定一个或者多个种子页面。
(2)将种子页面地址放入待处理队列中。
(3)从待处理队列读取一个地址信息。如果待处理队列为空,结束。
(4)如果该地址没有被处理过,并且是希望处理的页面,继续执行;否则跳到第3步。
(5)得到该地址的页面内容。
(6)将该页面中符合期望的数据信息保存到结果。
(7)将该页面中符合要求的链接存入待处理队列。
(8)将该地址从待处理队列挪到已处理队列中。
(9)跳到第3步,重复执行。
Scrapy的架构图
Scrapy主要包含引擎、下载器、爬虫、调度器和项目管道。
引擎(Scrapy Engine)处于核心位置,主要负责各个组件之间的通信和数据传递。所有的数据交流都是要通过引擎的。
爬虫(Spiders)将要请求的地址信息通过Scrapy Engine传给Scheduler(调度器)。我们的主要任务就是编写自己的Spider。
调度器(Scheduler)接收了引擎发送来的Requests(请求),并按顺序排列整理,然后把处理好的Requests再次发送给引擎,由引擎通过Downloader Middlewares(下载中间件)发送给Downloader(下载器)。
下载器(Downloader)通过下载中间件的设置来下载引擎传过来的Requests,并且将获取到的Response(响应数据)又发送给引擎(如果有下载失败的Requests,那么下载器会在后面接着下载)。
引擎收到Response后,再将它发送给Spiders,Spiders解析Response并提取出需要的数据,如果还有需要继续请求的URL,会继续执行上面的循环。
Spiders将这些数据发送给引擎,最后引擎将这些数据发送给Item Pipeline进行数据处理和存储。
架构图Scrapy运行的基本流程如下:
(1)确定爬虫名称和要抓取的初始网站。
(2)向网站发起请求Requests获得响应数据Responses。
(3)解析Responses提取数据,如果有需要跟进的地址则继续循环执行第二步。
(4)将需要的数据通过管道Pipeline的处理。
(5)处理完的数据传给Item保存。
爬虫
Spider类定义了如何爬取某个(或某些)网站,包括爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。换句话说,Spider就是定义爬取的动作及分析某个网页(或者是多个网页)的地方。定义爬虫是我们最重要的任务,而scrapy.Spider是最基本的类,所有我们编写的爬虫必须继承自该类。
网友评论