Spydy 配置文件
spydy的配置文件是通过使用python自带的configparser来进行解析的, spydy的配置文件大致可以分为以下三块:
- Globals: 设置spdydy的全局参数, 比如运行方式和并发量等。
- Pipeline: 定义各个spydy的工作流, 注意这个是按有序来, 靠前的组件将被率先执行。
- 组件参数配置: 定义spydy组件或者用户自定义组件的参数。 作为例子, 可以参考快速开始中的写好的写配置文件。
Globals
定义控制spydy运行的全局变量:
run_mode
: 这是必须要填写的, 可选项包括:
- once
: 仅运行一次
- forever
: 单线程, 一直运行
- async_once
: 使用异步的方式, 但是只运行一次
- async_forever
: 使用异步的方式一直运行
nworkers
: 同时运行的协程数量, 不过只要到run_mode
为async_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()