maize¶
基于 asyncio 的轻量级异步 Python 爬虫框架
双模式设计:Lite 单文件即跑,Classic 完整中间件/管道/调度器。
Python
from maize.aio.lite import LiteSpider, Request, Response
class MySpider(LiteSpider):
async def start_requests(self):
yield Request(url="https://example.com")
async def parse(self, response: Response):
self.logger.info(response.xpath("//title/text()").get())
if __name__ == "__main__":
MySpider().run() # 就这么简单
特性¶
- 异步高性能 — 基于 asyncio 实现,全链路 async/await
- 双模式 — Lite 轻量开箱即用,Classic 完整中间件/管道/调度器
- 中间件系统 — 下载器/爬虫/管道三层中间件,可插拔扩展
- 插件化下载器 — 内置 aiohttp、httpx、playwright、patchright
- RPA 支持 — 浏览器自动化,动态页面采集与反检测
- 数据管道 — 多管道并行,批量入库,支持 MySQL/Redis/CSV
- 分布式支持 — 基于 Redis 实现分布式爬虫
- 暂停/继续 — 爬虫运行时暂停和恢复
- 灵活配置 — 代码、配置文件、环境变量、YAML/TOML 多方式配置
安装¶
可选依赖:
| 命令 | 说明 |
|---|---|
pip install maize[rpa] |
Playwright/Patchright 浏览器自动化 |
pip install maize[mysql] |
MySQL Pipeline 支持 |
pip install maize[redis] |
Redis 分布式支持 |
pip install maize[all] |
完整安装 |
两种爬虫模式¶
| 维度 | Lite Spider | Classic Spider |
|---|---|---|
| 定位 | 轻量开箱即用,单文件即跑 | 完整功能,中间件/管道/调度器 |
| 依赖 | aiohttp 单依赖 | 可选 MySQL/Redis/Playwright |
| 配置 | 构造函数参数 + 可重写属性 | SpiderSettings 文件/对象/环境变量 |
| 中间件 | 不支持 | 三层中间件链 |
| 数据管道 | process_item 钩子 |
Pipeline 链(批量入库) |
| 去重/深度 | 内置(可关闭) | 中间件实现 |
| 适用场景 | 简单抓取、API 采集、监控轮询 | 大型项目、多管道、分布式 |
核心概念¶
| 概念 | 说明 | 文档 |
|---|---|---|
| Spider | Lite 轻量 / Classic 完整 | Lite / Classic |
| Request | HTTP 请求封装,支持优先级、回调、代理 | Request 详解 |
| Response | 响应封装,提供 xpath/css/json/urljoin | Response 详解 |
| Item | 数据结构定义,配合 Pipeline 自动入库 | Item 数据项 |
| Pipeline | 数据管道链,批量入库(Classic) | Pipeline 管道 |
| 中间件 | 下载器/爬虫/管道三层中间件(Classic) | 中间件系统 |
| 配置 | 代码 / 配置文件 / 环境变量 / YAML / TOML | 配置说明 |
| 下载器 | aiohttp / httpx / playwright / patchright | 下载器 |
环境要求¶
- Python 3.10+
- Linux, Windows, macOS