爬虫框架之 feapder 的使用
字数 1589 2025-08-19 12:41:34

Feapder爬虫框架全面教学文档

一、Feapder框架概述

Feapder是一款功能强大且易于上手的Python爬虫框架,具有以下特点:

  • 支持四种爬虫类型应对不同场景需求
  • 内置断点续爬、监控报警、浏览器渲染、海量数据去重等功能
  • 提供强大的爬虫管理系统Feaplat
  • 相比Scrapy学习成本更低,比Pyspider维护更好

二、Feapder框架架构设计

1. 核心模块

  • spider:爬虫调度器
  • request_buffer:请求缓冲区
  • collector:任务收集器
  • parser_control:解析控制器
  • item_buffer:数据缓冲区

2. 工作流程

  1. spider调度start_request生产任务
  2. start_request下发任务到request_buffer
  3. request_buffer批量存储任务到任务队列数据库
  4. collector从任务队列批量获取任务到内存队列
  5. parser_control从collector获取任务
  6. request请求和下载数据
  7. response封装返回给parser_control
  8. parser调度对应parser解析response
  9. 解析结果分发到item_buffer和request_buffer
  10. 数据批量入库

三、环境准备与安装

1. 环境要求

  • Python 3.6.0+
  • 支持Linux/Windows/macOS

2. 安装选项

# 精简版(不支持浏览器渲染、内存去重、MongoDB入库)
pip install feapder

# 浏览器渲染版
pip install "feapder[render]"

# 完整版(支持所有功能)
pip install "feapder[all]"

3. 安装验证

feapder

支持命令:create、retry、shell、zip

四、爬虫类型详解

1. AirSpider(轻量级爬虫)

特点

  • 学习成本低
  • 适合数据量少的简单场景
  • 无需断点续爬和分布式采集

创建项目

feapder create -p <project_name>

目录结构

project_name/
├── items/          # 数据库表映射的item
├── spiders/        # 爬虫脚本
├── CHECK_DATA.md   # 数据审核建议
├── main.py         # 运行入口
└── setting.py      # 配置文件

创建爬虫

feapder create -s <spider_name>

基础示例

import feapder
from loguru import logger

class FeapderSpiderDemo(feapder.AirSpider):
    def start_requests(self):
        yield feapder.Request("https://www.kuaidaili.com/free")

    def parse(self, request, response):
        logger.info(response.xpath("//title/text()").extract_first())
        logger.info(f"网站地址: {response.url}")

if __name__ == "__main__":
    FeapderSpiderDemo().start()

进阶功能

  1. 自定义解析函数
  2. 下载中间件
  3. 失败重试机制
  4. 线程数配置
  5. 停止爬虫方法

2. Spider(分布式爬虫)

特点

  • 基于Redis的分布式爬虫
  • 适用于海量数据采集
  • 支持断点续爬、爬虫报警、数据自动入库

创建示例

import feapder

class FeapderSpiderDemo(feapder.Spider):
    __custom_setting__ = dict(
        REDISDB_IP_PORTS="localhost:6379",
        REDISDB_USER_PASS="",
        REDISDB_DB=0
    )

    def start_requests(self):
        yield feapder.Request("https://www.kuaidaili.com/free")

    def parse(self, request, response):
        print(response.xpath("//title/text()").extract_first())

if __name__ == "__main__":
    FeapderSpiderDemo(redis_key="xxx:xxx").start()

断点续爬原理

  • 使用Redis有序集合存储任务
  • 任务分数=时间戳
  • 只取分数<当前时间的任务
  • 任务完成后主动删除

3. TaskSpider(任务型爬虫)

特点

  • 分布式爬虫
  • 内置从Redis或MySQL获取种子任务的逻辑
  • 可自定义实现其他任务来源

4. BatchSpider(批次爬虫)

特点

  • 分布式批次爬虫
  • 专为周期性采集设计
  • 自动维护批次信息表
  • 确保前一批次完成前不会开始新批次

五、核心功能详解

1. 数据库支持

MysqlDB

  • 线程池管理连接
  • 断开自动重连
  • 最大连接数100
  • 封装增删改查方法

RedisDB

  • 支持三种模式:
    • 普通模式(单节点)
    • 哨兵模式
    • 集群模式

2. 浏览器渲染

支持浏览器:

  • Chrome
  • Edge
  • PhantomJS
  • Firefox

配置示例:

WEBDRIVER = dict(
    pool_size=1,          # 浏览器数量
    load_images=True,     # 是否加载图片
    headless=False,       # 无头模式
    driver_type="CHROME", # 浏览器类型
    timeout=30,          # 请求超时时间
    window_size=(1024, 800),
    render_time=0,        # 渲染等待时间
    auto_install_driver=False # 自动下载驱动
)

3. 多线程配置

三种配置方式:

  1. 启动函数传递:
AirSpiderTest(thread_count=10).start()
  1. setting.py配置:
SPIDER_THREAD_COUNT = 32
  1. 类变量自定义:
__custom_setting__ = dict(
    SPIDER_THREAD_COUNT=10,
)

4. 监控报警

  • 内置监控打点(feapder>=1.6.6)
  • 可部署到Feaplat系统实现请求和数据监控

六、爬虫管理系统Feaplat

功能特点

  • 方便部署和调度爬虫
  • 可视化监控
  • 任务管理
  • 报警系统

安装部署

# 通过Docker安装(暂不支持Apple芯片)
docker安装方式详见官方文档

七、最佳实践建议

  1. 根据数据量选择合适爬虫类型:

    • 少量数据:AirSpider
    • 海量数据:Spider
    • 周期性采集:BatchSpider
    • 任务驱动:TaskSpider
  2. 生产环境推荐使用完整版安装

  3. 分布式环境确保Redis配置正确

  4. 合理设置线程数以平衡性能与稳定性

  5. 利用Feaplat系统进行生产环境管理

八、官方资源

  • GitHub: https://github.com/Boris-code/feapder
  • 官方文档: https://feapder.com/
  • 官方公众号: feader爬虫教程
Feapder爬虫框架全面教学文档 一、Feapder框架概述 Feapder是一款功能强大且易于上手的Python爬虫框架,具有以下特点: 支持四种爬虫类型应对不同场景需求 内置断点续爬、监控报警、浏览器渲染、海量数据去重等功能 提供强大的爬虫管理系统Feaplat 相比Scrapy学习成本更低,比Pyspider维护更好 二、Feapder框架架构设计 1. 核心模块 spider:爬虫调度器 request_ buffer:请求缓冲区 collector:任务收集器 parser_ control:解析控制器 item_ buffer:数据缓冲区 2. 工作流程 spider调度start_ request生产任务 start_ request下发任务到request_ buffer request_ buffer批量存储任务到任务队列数据库 collector从任务队列批量获取任务到内存队列 parser_ control从collector获取任务 request请求和下载数据 response封装返回给parser_ control parser调度对应parser解析response 解析结果分发到item_ buffer和request_ buffer 数据批量入库 三、环境准备与安装 1. 环境要求 Python 3.6.0+ 支持Linux/Windows/macOS 2. 安装选项 3. 安装验证 支持命令:create、retry、shell、zip 四、爬虫类型详解 1. AirSpider(轻量级爬虫) 特点 : 学习成本低 适合数据量少的简单场景 无需断点续爬和分布式采集 创建项目 目录结构 创建爬虫 基础示例 进阶功能 自定义解析函数 下载中间件 失败重试机制 线程数配置 停止爬虫方法 2. Spider(分布式爬虫) 特点 : 基于Redis的分布式爬虫 适用于海量数据采集 支持断点续爬、爬虫报警、数据自动入库 创建示例 断点续爬原理 使用Redis有序集合存储任务 任务分数=时间戳 只取分数 <当前时间的任务 任务完成后主动删除 3. TaskSpider(任务型爬虫) 特点 : 分布式爬虫 内置从Redis或MySQL获取种子任务的逻辑 可自定义实现其他任务来源 4. BatchSpider(批次爬虫) 特点 : 分布式批次爬虫 专为周期性采集设计 自动维护批次信息表 确保前一批次完成前不会开始新批次 五、核心功能详解 1. 数据库支持 MysqlDB 线程池管理连接 断开自动重连 最大连接数100 封装增删改查方法 RedisDB 支持三种模式: 普通模式(单节点) 哨兵模式 集群模式 2. 浏览器渲染 支持浏览器: Chrome Edge PhantomJS Firefox 配置示例: 3. 多线程配置 三种配置方式: 启动函数传递: setting.py配置: 类变量自定义: 4. 监控报警 内置监控打点(feapder>=1.6.6) 可部署到Feaplat系统实现请求和数据监控 六、爬虫管理系统Feaplat 功能特点 方便部署和调度爬虫 可视化监控 任务管理 报警系统 安装部署 七、最佳实践建议 根据数据量选择合适爬虫类型: 少量数据:AirSpider 海量数据:Spider 周期性采集:BatchSpider 任务驱动:TaskSpider 生产环境推荐使用完整版安装 分布式环境确保Redis配置正确 合理设置线程数以平衡性能与稳定性 利用Feaplat系统进行生产环境管理 八、官方资源 GitHub: https://github.com/Boris-code/feapder 官方文档: https://feapder.com/ 官方公众号: feader爬虫教程