Configuration

AyugeSpiderTools 将项目中所依赖的敏感配置信息放入了当前项目的 VIT 下的 .conf 文件中独立管理。

当然,你也可以在项目中自定义 VIT_DIR 参数来决定配置文件 .conf 的路径。

若你有很多的 Scrapy 项目需要统一管理,可以选择以下方式:

  • 如果是单机多项目的情况,你可以指定 VIT_DIR 参数为此机器上的统一地址即可。

  • 如果是多机多项目的情况,更推荐使用本库的 consulnacos 服务来远程配置和管理,灵活性更高。

下面来介绍 .conf 文件中的配置内容:

Introduction

配置格式使用 ini

[nacos]

nacos 可用于远程配置管理服务,可以更敏捷和容易地管理微服务平台。

参数名 参数备注 描述
url _ nacos 服务对应的链接,若有鉴权参数请在 url 中构建。
format 参数可选 json, xml, yaml nacos url 配置中对应的格式解析方法,支持 json,xml,yaml 解析。请优先使用 json 和 xml 来解析,yaml 解析需要安装 ayugespidertools[all] 依赖。

[consul]

consul 的配置管理功能同 nacos,是本库提供的另一选择。但请注意:consulnacos 的优先级更高,如果两者都配置了会优先使用 consul 配置。

不同的是配置中的鉴权 token 参数独立了出来。

参数名 参数备注 描述
url _ consul 服务对应的链接。
format 参数可选 json, xml, yaml, hcl consul url 配置中对应的格式解析方法,支持 json,xml,yaml,hcl 解析,推荐 json 解析格式。hcl 和 yaml 解析需要安装 ayugespidertools[all] 依赖。
token 可选,默认空 consul token 参数。

[mysql]

用于 mysql 存储相关场景中使用,比如创建对应的 sqlalchemyengineengine_conn 来用于去重,创建数据库连接来解决表格缺失,字段缺失等问题。

参数名 参数备注 描述
user _ _
password _ _
database _ 链接的数据库名称,在非 aiomysql 场景下,当 database 不存在时会用当前 user 创建所需库表及字段等。
host 可选,默认 localhost _
port 可选,默认 3306 _
engine 可选,默认 InnoDB 自动创建数据库和数据表时需要的参数
collate 可选,默认 utf8mb4_general_ci 自动创建数据库和数据表时需要的参数
charset 可选,默认 utf8mb4 自动创建数据库和数据表时需要的参数
odku_enable 可选,默认 false 是否开启 ON DUPLICATE KEY UPDATE 功能

注:

  • charset 参数选择有 utf8mb4gbklatin1utf16utf16lecp1251euckrgreekcharset 要与 collate 参数匹配。

  • 其中 enginecharsetcollate 为自动创建数据库和数据表时需要的参数,可随意配置或默认即可,也可提前手动创建好表,也可后续手动修改。

[mongodb:uri]

mongodb 链接的 uri 配置方式。

参数名 参数备注 描述
uri _ mongoDB uri

[mongodb]

mongodb 链接的普通方式,[mongodb:uri][mongodb] 按需选择一种即可。 若两种都设置了,会优先从 mongodb:uri 中获取配置。

参数名 参数备注 描述
database _ _
user _ _
password _ _
host 可选,默认 localhost _
port 可选,默认 27017 _
authsource 可选,默认 admin _
authMechanism 可选,默认 SCRAM-SHA-1 _

[postgresql]

用于 postgresql 存储相关场景中使用,比如创建对应的 sqlalchemyengineengine_conn 来用于去重,创建数据库连接来解决表格缺失,字段缺失等问题。

参数名 参数备注 描述
user _ _
password _ _
database _ _
host 可选,默认 localhost _
port 可选,默认 5432 _
charset 可选,默认 UTF8 同 mysql 一样,用于在表不存在而创建时需要,可随意配置,后续也可手动修改。

[elasticsearch]

用于 elasticsearch 存储相关场景中使用,也具有对应的 es_enginees_engine_conn 来用于存储前的去重(查询及更新等自定义)逻辑。

参数名 参数备注 描述
hosts _ 若有多个,用逗号分隔,比如 https://x.x.x.x:9200,https://x.x.x.x:9201
index_class 默认 {"settings":{"number_of_shards": 2}} es Document 中的配置
user 默认 elastic _
password 默认 elastic _
init 是否初始化 es Document,默认 false 是否创建 es 索引,此设置一般只在第一次运行项目时打开,或者选择手动创建并配置此参数永远为 false。
verify_certs 默认 false 证书验证,推荐开启
ca_certs 默认 None ca_certs 路径
client_cert 默认 None client_cert 路径
client_key 默认 None client_key 路径
ssl_assert_fingerprint 默认 None es 启动中的 HTTP CA certificate SHA-256 fingerprint 参数

注:

  • ca_certsclient_certclient_keyssl_assert_fingerprint 中只用配置一个即可,若 verify_certs 设置为 false 则都不用配置以上参数,但推荐开启此参数。

  • index_class 配置中不建议包含 name 参数,而是通过 AyuItem 中的 _table 来设置,AyuItem 会覆盖 index_class 中的 name 配置。

[mq]

推送到 RabbitMQ 场景所需的参数。以下配置参数与 pika 中一致,这里放入 pika 文档,请自行对照查看。

参数名 参数备注 描述
virtualhost _ _
queue _ _
exchange _ _
routing_key _ _
username 可选,默认 guest _
password 可选,默认 guest _
host 可选,默认 localhost _
port 可选,默认 5672 _

[oracle]

用于 oracle 存储相关场景中使用,比如创建对应的 sqlalchemyengineengine_conn 来用于去重,但不会处理数据库表及字段缺失等错误,请提前创建好,因为其部分报错不如 mysqlpostgresql 那样清晰明了,虽然也能解决,但必要性不高。

参数名 参数备注 描述
user _ _
password _ _
service_name _ _
host 可选,默认 localhost _
port 可选,默认 1521 _
encoding 可选,默认 utf8 oracledb 的链接参数。
thick_lib_dir 可选,默认 false oracledb 的 thick_mode 所需参数,按需配置。

[kafka]

推送到 kafka 场景所需的参数。以下配置参数与 kafka-python 中一致,这里放入 kafka-python 文档,请自行对照查看。

参数名 参数备注 描述
bootstrap_servers _ 若有多个,用逗号分隔。比如 x.x.x.x:9092,x.x.x.x:9093
topic _ _
key _ _

[kdl_dynamic_proxy]

快代理动态代理配置参数。

参数名 参数备注 描述
proxy _ 快代理动态代理 api。
username _ _
password _ _

[kdl_exclusive_proxy]

快代理独享代理配置参数。

参数名 参数备注 描述
proxy _ 快代理独享代理 api。
username _ _
password _ _
index 可选,默认 1 表示取其索引值对应的代理。

[oss:ali]

上传到阿里云 oss 的配置参数。

参数名 参数备注 描述
access_key _ 阿里云 access_key_id
access_secret _ 阿里云账号对应的 access_key_secret
endpoint _ 填写 Bucket 所在地域对应的 Endpoint
bucket - Bucket
doc - 需要操作的文件夹目录,比如 file/img,为可选参数。
upload_fields_suffix 规则字段,默认为 _file_url 上传到 oss 的字段规则,包含 upload_fields_suffix 后缀的字段会上传到 oss。
oss_fields_prefix 规则字段,默认为 _ 上传到 oss 的字段生成的新字段规则,会在原字段添加 oss_fields_prefix 前缀。
full_link_enable 是否开启完整链接,默认 false 为是否保存完整的 oss 文件链接。

遵守规则时的 oss 上传逻辑时使用,更复杂的需求也可根据示例自行实现。具体请看 demo_ossdemo_oss_sec 的场景示例。请自行选择可接受的风格。

[custom_section]

用于自定义配置:

一些 scrapy 第三方扩展需要在 settings.py 中设置一些配置,涉及到 host,密码等隐私配置,直接展示在 settings.py 里是不可接受的,这里提供一种方法来解决。

settings.pyspider 等脚本中赋值重要参数时,可以从 VIT_DIR.conf 中获取自定义配置内容,来达到隐藏隐私内容和保持配置内容统一存放的目的;

比如在 .conf 中自定义配置以下内容:

[custom_section]
custom_option=custom_value
custom_int=1
custom_bool=true
custom_float=3.1415926

那么,可以在程序任意地方通过 get_cfg 来获取自定义部分:

from ayugespidertools.config import get_cfg

_my_cfg = get_cfg()
custom_option = _my_cfg["custom_section"].get("custom_option", "no_custom_value")
custom_int = _my_cfg["custom_section"].getint("custom_int", 0)
custom_bool = _my_cfg["custom_section"].getboolean("custom_bool", False)
custom_float = _my_cfg["custom_section"].getfloat("custom_float", 3.14)