zoukankan      html  css  js  c++  java
  • scrapy结构

    图中绿色的是数据的流向
    我们看到图里有这么几个东西,分别是
    Spiders:爬虫,定义了爬取的逻辑和网页内容的解析规则,主要负责解析响应并生成结果和新的请求
    Engine:引擎,处理整个系统的数据流处理,出发事物,框架的核心。
    Scheduler:调度器,接受引擎发过来的请求,并将其加入队列中,在引擎再次请求时将请求提供给引擎
    Downloader:下载器,下载网页内容,并将下载内容返回给spider
    ItemPipeline:项目管道,负责处理spider从网页中抽取的数据,主要是负责清洗,验证和向数据库中存储数据
    Downloader Middlewares:下载中间件,是处于Scrapy的Request和Requesponse之间的处理模块
    Spider Middlewares:spider中间件,位于引擎和spider之间的框架,主要处理spider输入的响应和输出的结果及新的请求middlewares.py里实现


    是不感觉东西很多,很乱,有点懵!没关系,框架之所以是框架因为确实很简单
    我们再来看下面的这张图!你就懂了!

     
    1.spider的yeild将request发送给engine
    2.engine对request不做任何处理发送给scheduler
    3.scheduler,生成request交给engine
    4.engine拿到request,通过middleware发送给downloader
    5.downloader在获取到response之后,又经过middleware发送给engine
    6.engine获取到response之后,返回给spider,spider的parse()方法对获取到的response进行处理,解析出items或者requests
    7.将解析出来的items或者requests发送给engine
    8.engine获取到items或者requests,将items发送给ItemPipeline,将requests发送给scheduler(ps,只有调度器中不存在request时,程序才停止,及时请求失败scrapy也会重新进行请求)
  • 相关阅读:
    BZOJ1229 USACO2008 Nov toy 玩具 【三分+贪心】*
    BZOJ1304 CQOI2009 叶子的染色 【树形DP】
    BZOJ1131 POI2008 Sta 【树形DP】
    BZOJ1096 ZJOI2007 仓库建设 【斜率优化DP】
    BZOJ4540 Hnoi2016 序列 【莫队+RMQ+单调栈预处理】*
    Codeforces 1012C Hills【DP】*
    POJ1741 Tree + BZOJ1468 Tree 【点分治】
    BZOJ2152 聪聪可可 【点分治】
    HDU1693 Eat the Trees 【插头DP】*
    RUAL1519 Formula 1 【插头DP】
  • 原文地址:https://www.cnblogs.com/dhName/p/13191173.html
Copyright © 2011-2022 走看看