zoukankan      html  css  js  c++  java
  • Scrapy爬虫框架中的两个流程

    下面对比了Scrapy爬虫框架中的两个流程——

    Scrapy框架的基本运作流程;② Spider或其子类的几个方法的执行流程。

    这两个流程是互相联系的,可对比学习。

    1 ● Scrapy框架的基本运作流程

    Scrapy引擎从调度器(Scheduler)中获取一个链接(URL)

    Scrapy引擎将上述的URL封装成一个请求对象(Request),并传给下载器(Downloader)

    下载器(Downloader)把资源下载下来,并封装成响应对象(Response)

    Scrapy引擎从下载器中接收Response对象, 并通过爬虫中间件(Spider Middleware)发送给Spider解析 (Response对象默认交给Spider或其子类的parse方法解析)

    如果Response对象解析出实体(Item),则将Item传给实体管道(Item Pipeline)进行持久化等进一步的处理;如果解析出Request对象, 那么将Request对象传给调度器(Scheduler)等待抓取

    2 ● Spider或其子类的几个方法的执行流程

    __init__():初始化爬虫名字和start_urls列表

    start_requests() :该方法会调用make_requests_from url(),生成Requests对象,将该对象交给Scrapy引擎的Downloader下载并返回Response对象

    parse() : 根据指定的回调函数解析上述的Response对象,并返回Item对象或Request对象,Item传给Item Pipeline进行持久化等进一步的处理,而Request对象传给调度器(Scheduler)等待下载,下载完后由指定的回调函数处理(默认为parse()),一直进行循环,直到处理完所有的数据为止。

    Spider的子类CrawlSpider用于全站爬取,当编写爬虫规则(即Rule对象)时,应该避免使用parse作为回调函数,这是因为CrawlSpider使用parse方法来实现其逻辑,如果覆盖了 parse方法,crawl spider将会运行失败。

  • 相关阅读:
    S1 商品信息管理系统
    用例图
    mvc使用mongodb时objectId序列化与反序列化
    windows下检測文件改变
    【Android 开发实例】时间管理APP开发之数据库设计
    设计模式 之 原型
    ANT安装及配置
    Java环境变量设置
    Win7安装软件,界面上中文显示乱码的解决方案
    Some perl tips
  • 原文地址:https://www.cnblogs.com/ArrozZhu/p/8491302.html
Copyright © 2011-2022 走看看