爬虫框架之 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. 工作流程
- 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. 安装选项
# 精简版(不支持浏览器渲染、内存去重、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()
进阶功能
- 自定义解析函数
- 下载中间件
- 失败重试机制
- 线程数配置
- 停止爬虫方法
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. 多线程配置
三种配置方式:
- 启动函数传递:
AirSpiderTest(thread_count=10).start()
- setting.py配置:
SPIDER_THREAD_COUNT = 32
- 类变量自定义:
__custom_setting__ = dict(
SPIDER_THREAD_COUNT=10,
)
4. 监控报警
- 内置监控打点(feapder>=1.6.6)
- 可部署到Feaplat系统实现请求和数据监控
六、爬虫管理系统Feaplat
功能特点
- 方便部署和调度爬虫
- 可视化监控
- 任务管理
- 报警系统
安装部署
# 通过Docker安装(暂不支持Apple芯片)
docker安装方式详见官方文档
七、最佳实践建议
-
根据数据量选择合适爬虫类型:
- 少量数据:AirSpider
- 海量数据:Spider
- 周期性采集:BatchSpider
- 任务驱动:TaskSpider
-
生产环境推荐使用完整版安装
-
分布式环境确保Redis配置正确
-
合理设置线程数以平衡性能与稳定性
-
利用Feaplat系统进行生产环境管理
八、官方资源
- GitHub: https://github.com/Boris-code/feapder
- 官方文档: https://feapder.com/
- 官方公众号: feader爬虫教程