当前位置 博文首页 > 宓海的博客:python网络爬虫之Scrapy框架介绍

    宓海的博客:python网络爬虫之Scrapy框架介绍

    作者:[db:作者] 时间:2021-06-16 21:15

    Scrapy的框架如图所示,这是从MOOC上获取图表示例,下面介绍具体都是干什么的。
    在这里插入图片描述

    架构介绍

    & Engine。是框架的核心,控制所有模块之间的数据流动,然后根据各个模块出现的时间进行触发。不需进行修改。
    & Downloader。 下载器。获取请求并提交请求,下载网页内容,并将网页内容返回给Spider。不需进行修改。
    & Scheduler。 将Engine发过来的请求进行调度,判断在爬取网站时的请求处理顺序,同时也可以在Engine在此请求时将请求提供给Engine。功能固定且完善,不需进行修改。
    & Downloader Middlewares。 自如其名,是位于Engine和Downlader之间的钩子框架,主要处理之间相互响应。进行相应的修改以达到Engine、Downloader和Scheduler之间用户可配置的控制的目的。
    & Spider。 解析响应并生成体局结果和新的请求,有着产生爬取项,产生爬取请求的功能。
    & Item。 定义爬取结果的数据结构,爬取的数据会赋值该Item对象。
    & Item Pipeline。 负责处理Spider从网页抽取的项目,其主要任务是清洗、验证和储存数据。里面的功能是完全由用户进行编写修改的。
    & Spider Middlewares。 主要处理Engine向Spider输入的响应和输出的结果以及新的请求。

    数据流

    Scrapy中的数据流由Engine控制,过程如下。
    1.Engine首先打开一个网站,找到处理该网站的Spider,并向Spider请求第一个需要爬取的URL。
    2.Engine从Spider中获取到第一个要爬取的URL,通过Scheduler以Request的形式进行调度。
    3.Engine向Scheduler请求下一个要爬取的URL。
    4.Scheduler返回下一个要爬取的URL给Engine,Engine将URL通过 Downloader Middlewares发送到Engine。
    5.页面下载完成,Downloader生成该页面的Response,并将其通过 Downloader Middlewares发送给Engine。
    6.Engine从下载器接收到Response,并将其通过Spider Middlewares发送给Spider处理。
    7.Spider处理Response,并返回提取到的Item及新的Request给Scheduler。
    8.Engine将Spider返回的Item给Item Pipeline,将新的Request给Scheduler。
    9.之后重复2-8,直到处理结束。

    项目文件结构

    scrapy.cfg Scrapy项目的配置文件,定义了项目的配置文件路径,部署相关信息等。
    items.py 定义Item数据结构,在此文件编写Item的定义。
    pipelines,py 定义Item Pipeline的实现,所有相关的实现都在此文件。
    settings.py 项目的全局配置。
    middlewares.py 它定义Spider Middlewares和Downloader Middlewares的实现。
    spiders 包含Spider的实现,每一个Spider都有一个文件。