• Scrapy源码学习(二)


    上次说到scrapy_home/scrapy/commands包下每个模块对应了scrapy命令行中的一个命令,他们都继承自command.py模块中ScrapyCommand这个类,这次就来简单看一下ScrapyCommand这个类。

    一、几个属性

    ScrapyCommand类有几个全局属性:

    requires_project,表示该命令是否需要在project中才能执行;

    crawler_process,CrawlerProcess类的实例,是一个抓取处理器,在一个抓取处理器中能运行多个抓取;

    default_settings,默认的配置;

    exitcode,退出状态。

    另外,还有

    _crawler属性,这个是一次抓取至少需要的一个抓取器;

    settings,用来保存抓取的配置。

    二、几个成员函数

    __init__(self),初始化函数;

    set_crawler(self, crawler),设置抓取器;

    crawler(self),创建一个抓取器,并将创建的抓取器用set_crawler函数设置;

    syntax、short_desc、long_desc、help,这几个是用来提示命令功能及使用方法的函数,由具体的命令实现模块覆盖;

    add_options(self, parser),命令能用的options在这里做出限制;

    process_options(self, args, opts),根据传入的options修改本次执行的一些配置;

    run(self, args, opts),执行一个具体的命令,具体执行内容由具体的命令实现模块覆盖,执行某一具体命令的入口。

    三、总结

    这个类是比较简单的,作为scrapy所有命令的基类,该类定义了一些共有的属性,完成了一些共有的功能,另外对各命令的行为做出了一些共有的限制。

    码农改变世界!
  • 相关阅读:
    iOS开发 日常错误积累
    Linux编程---I/O部分
    Binder机制1---Binder原理介绍
    hdu4405概率dp入门
    SSL连接建立过程分析(1)
    用GDB调试程序(一)
    RBAC权限管理
    HDU3930(离散对数与原根)
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 产生数
  • 原文地址:https://www.cnblogs.com/stGeekpower/p/3325728.html
Copyright © 2020-2023  润新知