# crawler_system **Repository Path**: li-jiahua521/crawler_system ## Basic Information - **Project Name**: crawler_system - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-29 - **Last Updated**: 2026-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 定时爬虫系统 - 飞书多维表格集成 这是一个支持定时自动爬取并将数据存储到飞书多维表格的爬虫系统。 ## 功能特性 - ✅ 定时自动爬取(支持Cron表达式配置) - ✅ 飞书多维表格数据存储 - ✅ 灵活的爬虫扩展机制 - ✅ 完善的日志记录 - ✅ 支持单次执行和定时执行 ## 项目结构 ``` crawler_system/ ├── crawler/ # 爬虫模块 │ ├── base_crawler.py # 爬虫基类 │ └── example_crawler.py # 示例爬虫 ├── feishu/ # 飞书API模块 │ └── feishu_client.py # 飞书客户端 ├── scheduler/ # 调度器模块 │ └── task_scheduler.py # 任务调度器 ├── logs/ # 日志目录 ├── config.py # 配置管理 ├── main.py # 主程序入口 ├── requirements.txt # 依赖包 ├── .env.example # 环境变量示例 └── README.md # 说明文档 ``` ## 快速开始 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 配置环境变量 复制 `.env.example` 为 `.env` 并填写配置: ```bash cp .env.example .env ``` 编辑 `.env` 文件: ```env # 飞书应用凭证(在飞书开放平台创建应用获取) FEISHU_APP_ID=cli_xxxxxxxxxxxxx FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxx # 飞书多维表格配置 FEISHU_BITABLE_APP_TOKEN=bascnxxxxxxxxxxxxxx FEISHU_BITABLE_TABLE_ID=tblxxxxxxxxxxxxxx # 定时任务配置(Cron表达式:分 时 日 月 周) SCHEDULE_CRON=0 9 * * * # 每天早上9点执行 ``` ### 3. 获取飞书配置信息 #### 创建飞书应用: 1. 访问 [飞书开放平台](https://open.feishu.cn/) 2. 创建企业自建应用 3. 获取 `App ID` 和 `App Secret` 4. 添加权限:`bitable:app`(多维表格权限) #### 获取多维表格信息: 1. 打开飞书多维表格 2. 从URL中提取:`https://xxx.feishu.cn/base/[APP_TOKEN]?table=[TABLE_ID]` 3. `APP_TOKEN` 即为 `FEISHU_BITABLE_APP_TOKEN` 4. `TABLE_ID` 即为 `FEISHU_BITABLE_TABLE_ID` ### 4. 运行程序 #### 单次执行(测试用): ```bash python main.py --once ``` #### 定时执行: ```bash python main.py ``` ## 自定义爬虫 创建新的爬虫类,继承 `BaseCrawler`: ```python from crawler.base_crawler import BaseCrawler from typing import List, Dict, Any class MyCrawler(BaseCrawler): def __init__(self): super().__init__() self.target_url = "https://your-target-site.com" def crawl(self) -> List[Dict[str, Any]]: html = self.fetch_page(self.target_url) soup = self.parse_html(html) # 自定义解析逻辑 data = [] # ... 你的爬取逻辑 return data ``` 然后在 `scheduler/task_scheduler.py` 中替换爬虫类。 ## Cron表达式说明 格式:`分 时 日 月 周` 示例: - `0 9 * * *` - 每天早上9点 - `0 */6 * * *` - 每6小时执行一次 - `30 8 * * 1-5` - 工作日早上8:30 - `0 0 1 * *` - 每月1号凌晨 ## 部署建议 ### Windows 任务计划程序 1. 打开"任务计划程序" 2. 创建基本任务 3. 触发器:每天/开机时 4. 操作:启动程序 `python main.py` ### Linux Systemd服务 创建 `/etc/systemd/system/crawler.service`: ```ini [Unit] Description=Crawler System After=network.target [Service] Type=simple User=your_user WorkingDirectory=/path/to/crawler_system ExecStart=/usr/bin/python3 main.py Restart=always [Install] WantedBy=multi-user.target ``` 启动服务: ```bash sudo systemctl enable crawler.service sudo systemctl start crawler.service ``` ### Docker部署 ```dockerfile FROM python:3.10-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["python", "main.py"] ``` ## 日志管理 - 日志文件位置:`logs/crawler.log` - 自动轮转:单文件超过10MB自动分割 - 保留时间:30天 ## 常见问题 **Q: 飞书API返回权限错误?** A: 检查应用是否添加了 `bitable:app` 权限,并确保应用已发布。 **Q: 如何修改爬取频率?** A: 修改 `.env` 文件中的 `SCHEDULE_CRON` 配置。 **Q: 如何添加多个爬虫任务?** A: 在 `task_scheduler.py` 中添加多个任务方法,并注册到调度器。 ## 技术栈 - **爬虫**: requests + BeautifulSoup4 - **定时任务**: APScheduler - **飞书API**: lark-oapi - **日志**: loguru - **配置管理**: python-dotenv ## License MIT