Skip to content

Spydy 配置文件

spydy的配置文件是通过使用python自带的configparser来进行解析的, spydy的配置文件大致可以分为以下三块:

  • Globals: 设置spdydy的全局参数, 比如运行方式和并发量等。
  • Pipeline: 定义各个spydy的工作流, 注意这个是按有序来, 靠前的组件将被率先执行。
  • 组件参数配置: 定义spydy组件或者用户自定义组件的参数。 作为例子, 可以参考快速开始中的写好的写配置文件。

Globals

定义控制spydy运行的全局变量:

run_mode: 这是必须要填写的, 可选项包括: - once: 仅运行一次 - forever: 单线程, 一直运行 - async_once: 使用异步的方式, 但是只运行一次 - async_forever: 使用异步的方式一直运行

nworkers: 同时运行的协程数量, 不过只要到run_modeasync_forever的时候才有效果。 interval: 爬虫每次运行间的等待时间。 recovery_type: 当程序报错的时候, urls组件处理当前url的方式, 目前支持: - skip: 不做任何事情, 意味着发生错误的url不会被执行第二次, 通常不是理想的选择 - url_back_last: 把出错的url放回队列的最后, 当然前提是urls组件是有序的队列, 例如RedisListUrls。 - url_back_first: 把出错的url放回队列的z最前面, 同样,前提是urls组件是有序的队列。

Pipeline

在这里我们需要定义我们的整个工作流, 在强调一次, pipeline中的组件是按照定义的先后顺序有序执行的。定义的方式通常是将spydy组件名称(或者是自定义组件, 区分大小写)赋给一个自定义的步骤名称, 这里的步骤名称可以是任意的, 没有特别的限制, 但是简易使用符合步骤类别的名称, 比如urls=RedisUrlsList的方式,虽然可以不适用urls, 但是显然, 使用urls能够是工作流更加清晰易懂。

组件参数配置

不使用配置文件

通过spydy命令在命令行启动spydy并不是spydy的唯一使用方式, 你也可以通过导入spydy的相应模块, 并准备好运行参数(字典格式)来运行spydy:

from spydy.engine import Engine
from spydy.utils import check_configs

configs = {
    "Globals": {"run_mode": "async_forever", "nworkers": "4", "recovery_type":"url_back_last"},
    "PipeLine": {
        "url": "DummyUrls",
        "request": "AsyncHttpGetRequest",
        "log" : "MessageLog", 
        "parser": "DmozParser",
        "store": "CsvStore",
    },
    "DummyUrls": {"url": "https://dmoz-odp.org/, "repeat":"10"},
    "CsvStore": {"file_name": "B07YWBG2XH.csv"},
}

check_configs(configs)
engine = spydy.engine.Engine(configs)
engine.run()