pipelines

介绍本库中自带的常用 pipelines 管道。

需要使用本库中的配置,需要在 spider 中修改如下,此为前提:

from ayugespidertools.spiders import AyuSpider


# 当前 spider 要继承 AyuSpider
class DemoOneSpider(AyuSpider):
    ...

1. Mysql 存储

1.1. 普通存储

AyuFtyMysqlPipelinemysql 存储的普通模式,具有自动创建所需数据库,数据表,自动动态管理 table 字段,表注释,也会自动处理常见(字段编码,Data too long,存储字段不存在等等)的存储问题。

1.1.1 使用方法

只需激活 DOWNLOADER_MIDDLEWARES 对应的配置即可。

custom_settings = {
    "ITEM_PIPELINES": {
        # 激活此项则数据会存储至 Mysql
        "ayugespidertools.pipelines.AyuFtyMysqlPipeline": 300,
    },
}

然后在 spider 中按照约定的格式进行 yield item 即可,具体请查看 yield item,然后不用再去管 pipelines 了。

1.2. 异步存储

1.2.1. twisted 实现

使用 twistedadbapi 实现 Mysql 存储场景下的异步操作

1.2.1.1. 使用方法

同样地,只需激活 DOWNLOADER_MIDDLEWARES 对应的配置即可。

custom_settings = {
    "ITEM_PIPELINES": {
        # 激活此项则数据会存储至 Mysql
        "ayugespidertools.pipelines.AyuTwistedMysqlPipeline": 300,
    },
}

1.3. 运行日志记录

打开 RECORD_LOG_TO_MYSQL 参数会记录 spider 的运行情况和所依赖的数据库下(带有 crawl_time 字段的)所有表格的当前采集情况统计。

2. MongoDB 存储

这里就直接介绍其依赖方法,因为其它配置与上方 Mysql 场景一模一样

2.1. 普通存储

# 依赖 AyuFtyMongoPipeline

2.2. 异步存储

2.2.1. twisted 实现

# 依赖 AyuTwistedMongoPipeline

2.2.2. asyncio motor 实现

# 依赖 AsyncMongoPipeline

3. 消息推送服务

3.1. mq

此场景下给出的是以 pika 实现的 RabbitMQ 的示例

需要激活 ITEM_PIPELINES 对应的配置,然后在 .conf 中配置 mq 相关配置。

spider 中的 custom_settings 所需配置如下:

"ITEM_PIPELINES": {
    "ayugespidertools.pipelines.AyuMQPipeline": 300,
},

.conf 中的所需配置如下:

[mq]
host=***
port=5672
username=***
password=***
virtualhost=***
queue=***
exchange=***
routing_key=***

# 一般只需配置以上参数即可,因为会有一些默认值,如果不需更改则不用配置,比如以下为非必须参数及其默认值:
durable=True
exclusive=False
auto_delete=False
content_type="text/plain"
delivery_mode=1
mandatory=True

然后在 spideryield 你所需结构的 item 即可(类型为 dict)。

3.2. kafka

此场景给出的是以 kafka-python 实现的 kafka 推送示例

需要激活 ITEM_PIPELINES 对应的配置,然后在 .conf 中配置 mq 相关配置。

spider 中的 custom_settings 所需配置如下:

"ITEM_PIPELINES": {
    "ayugespidertools.pipelines.KafkaPipeline": 300,
},

.conf 中的所需配置如下:

[kafka]
bootstrap_servers=127.0.0.1:9092 #若多个用逗号分隔
topic=***
key=***

然后在 spideryield 你所需结构的 item 即可(类型为 dict)。