zoukankan      html  css  js  c++  java
  • Item Pipeline

    在创建一个scrapy项目的时候,会自动生成一个pipeliens.py文件,它是用来放置用户自定义的item pipeline,

    一个 item pipeline不需要继承特定的基类,只需要实现某些特定的方法,例如process_item、open_spider、close_spider

    一个item pipeline必须实现一个process_item(item, spider)方法,该方法用来处理每一项由spider爬取到的数据,这其中有两个参数

      item

        爬取到的一项数据(item或者字典)

      spider

        爬取这项数据的spider对象

    可以看出process_item方法是item pipeline的核心

      1、如果process_item在处理某一项item的时候返回了一项数据,返回的数据就继续传递给下一个item pipeline(如果有就会继续处理)

      2、如果process_item在处理某一项item的时候跑出了一个一场,那么这个item就会被抛弃,不会继续传递给后面的item pipeline处理了,通常我们在检测到无效数据的时候或者想要过滤数据的时候会抛出DropItem异常

    除了必须实现的process_item方法以外,还有几种常用的方法可以根据需求来选择性的实现

      open_spider(self,spider)

        Spider打开的时候(处理数据之前)就会回调这个方法,通常这个方法用在开始处理数据之前完成某些初始化的工作,比如连接指定的数据库

      close_spider(self, spider)

        Spider关闭时(处理完成数据之后)回调这个方法通常这个方法用在处理完成数据之后完成某些清理的操作,比如关闭数据库的连接

      from_crawler(cls, crawler)

        创建Item pipeline对象的时候回调这个方法。通常在这个方法中通过crawler.settings读取配置,根据配置来创建item pipeline对象

    启用Item pipeline

    在scrapy中item pipeline是可选择组件,当你想要启动某一个item pipeline的时候需要在settings文件中进行配置

      ITEM_PIPELINES是一个字典,我们把想要启动的item pipeline添加到这个字典中,这里面每一个键是item pipeline类的导入的路径,对应的值是一个0-1000之间的数值,同时启动多个item pipeline的时候scrapy会根据这些数值来决定item pipeline处理数据的先后的顺序,数值小的在前面先执行

  • 相关阅读:
    如何使用观测者模式实现监控和推送
    oracle在desc表时,name 和type列不能格式化问题(占位过长)
    [置顶] Vim用正则表达式进行批量修改
    Eclipse扩展点
    写给C语言新手的话
    QQ圈子降级为“应用”后应关注其隐私设置
    win8vs2012创建自带sqlServer数据库出错
    JQuery 选择器
    SINGLETON(单例模式)---(孤独的人)
    C++中的常对象和常对象成员
  • 原文地址:https://www.cnblogs.com/tulintao/p/11700375.html
Copyright © 2011-2022 走看看