# DataFetcher **Repository Path**: lh1985/data-fetcher ## Basic Information - **Project Name**: DataFetcher - **Description**: 数据爬虫 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-12 - **Last Updated**: 2026-01-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数据采集系统 一个基于Django的灵活、可扩展的网络数据采集系统,支持多种调度方式和自定义配置。 ## 项目概述 数据采集系统是一个功能完整的网络数据采集平台,提供了从任务创建、调度执行到结果存储和查看的全流程管理。系统采用模块化设计,支持灵活扩展和定制化配置,适用于各种网络数据采集场景。 ### 核心功能 - **灵活的任务调度**:支持间隔执行、定时执行和单次执行三种调度模式 - **自定义采集配置**:可配置采集站点、关键词和采集参数 - **完整的结果管理**:采集结果自动存储并提供查询功能 - **详细的运行日志**:记录任务执行过程和异常信息 - **用户权限管理**:基于角色的访问控制,支持自定义权限 - **直观的管理界面**:基于SimpleUI的现代化管理后台 ## 技术栈 ### 后端框架 - **Django 5.2.10**:Python Web框架,提供完整的MVC架构 ### 数据库 - **PostgreSQL**:关系型数据库,用于存储系统数据 ### 任务调度 - **APScheduler**:Python任务调度框架,支持多种调度方式 ### UI框架 - **SimpleUI**:Django Admin的现代化主题扩展 ### 其他依赖 - **dotenv**:环境变量管理 - **psycopg2**:PostgreSQL数据库驱动 ## 系统架构 ### 项目结构 ``` data-fetcher/ ├── core/ # 核心功能模块 │ ├── models.py # 运行日志模型 │ └── admin.py # 日志管理后台 ├── custom_auth/ # 自定义认证模块 │ ├── models.py # 用户、角色、权限模型 │ └── admin.py # 认证管理后台 ├── website/ # 网站管理模块 │ ├── models.py # 采集站点模型 │ └── admin.py # 站点管理后台 ├── keywords/ # 关键词管理模块 │ ├── models.py # 关键词模型 │ └── admin.py # 关键词管理后台 ├── scheduler/ # 任务调度模块 │ ├── models.py # 任务、调度模型 │ ├── scheduler.py # 调度器实现 │ ├── tasks.py # 任务执行逻辑 │ └── admin.py # 任务管理后台 ├── result/ # 采集结果模块 │ ├── models.py # 结果模型 │ └── admin.py # 结果管理后台 ├── export/ # 数据导出模块 │ ├── models.py # 导出任务模型 │ └── admin.py # 导出管理后台 ├── spider/ # 爬虫配置模块 │ ├── models.py # 爬虫配置模型 │ └── admin.py # 爬虫管理后台 ├── data_fetcher/ # 项目配置目录 │ ├── settings.py # 全局配置 │ └── urls.py # URL路由 ├── manage.py # Django管理命令 └── README.md # 项目说明文档 ``` ### 核心模型关系 1. **任务管理** - Task:采集任务主表 - TaskKeyword:任务关键词关联 - TaskWebsite:任务站点关联 2. **调度系统** - Schedule:任务调度计划 - 支持interval、cron、date三种调度类型 3. **结果管理** - CrawlResult:采集结果表 - 与Task模型关联 4. **日志系统** - RunningLog:运行日志表 - 记录任务执行过程和异常 5. **认证系统** - CustomUser:自定义用户模型 - Role:角色模型 - CustomPermission:自定义权限模型 ## 安装指南 ### 环境要求 - Python 3.10+ - PostgreSQL 13+ - pip 23+ ### 安装步骤 1. **克隆项目** ```bash git clone cd data-fetcher ``` 2. **创建虚拟环境** ```bash python -m venv venv # Windows env\Scripts\activate # Linux/macOS source venv/bin/activate ``` 3. **安装依赖** ```bash pip install -r requirements.txt ``` 4. **配置环境变量** 创建`.env`文件并配置以下参数: ``` SECRET_KEY=django-secret-key DEBUG=True ALLOWED_HOSTS=* DB_NAME=information_collection DB_USER=admin DB_PASSWORD=admin123 DB_HOST=localhost DB_PORT=5432 ``` 5. **初始化数据库** ```bash python manage.py makemigrations python manage.py migrate ``` 6. **创建超级用户** ```bash python manage.py createsuperuser ``` 7. **启动开发服务器** ```bash python manage.py runserver ``` ## 使用说明 ### 访问管理后台 在浏览器中访问 `http://localhost:8000/admin`,使用超级用户账号登录。 ### 创建采集任务 1. **登录管理后台** 2. 进入"调度器管理" > "采集任务管理" 3. 点击"添加采集任务" 4. 填写任务基本信息 5. 配置任务关键词和采集站点 ### 配置调度计划 1. 进入"调度器管理" > "采集计划管理" 2. 点击"添加采集计划" 3. 选择任务和调度类型 4. 配置调度参数(JSON格式) #### 调度配置示例 **间隔执行(interval)** ```json { "seconds": 3600 } ``` **定时执行(cron)** ```json { "hour": "0", "minute": "0" } ``` **单次执行(date)** ```json { "run_date": "2023-12-31T23:59:59" } ``` ### 查看执行结果 1. 进入"结果管理" > "采集结果管理" 2. 可以按任务、时间范围等条件筛选结果 3. 查看每条结果的详细信息 ### 查看运行日志 1. 进入"系统管理" > "运行日志管理" 2. 可以按任务、日志级别等条件筛选日志 3. 查看详细的日志信息和异常堆栈 ## 配置说明 ### 系统配置 主要配置文件位于 `data_fetcher/settings.py`,可配置以下参数: - **数据库配置**:PostgreSQL连接参数 - **时区设置**:默认`Asia/Shanghai` - **语言设置**:默认`zh-Hans` - **SimpleUI配置**:管理后台菜单和主题 - **日志配置**:日志级别和存储位置 ### 任务调度配置 调度配置通过`Schedule`模型的`schedule_config`字段(JSON格式)进行配置: #### 间隔执行(interval) 参数: - weeks:周数 - days:天数 - hours:小时数 - minutes:分钟数 - seconds:秒数 #### 定时执行(cron) 参数: - year:年份 - month:月份 - day:日期 - week:周 - day_of_week:星期几(0-6或mon-sun) - hour:小时 - minute:分钟 - second:秒 #### 单次执行(date) 参数: - run_date:执行时间(ISO格式) ## 贡献指南 1. **Fork项目** 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启Pull Request ### 代码规范 - 遵循PEP 8代码风格 - 编写单元测试 - 保持代码文档清晰 ## 许可证 本项目采用MIT许可证,详情请查看LICENSE文件。 ## 技术支持 如有问题或建议,请通过以下方式联系: - 问题反馈:[Issues](https://github.com/your-username/data-fetcher/issues) - 邮件:your-email@example.com --- **版本:1.0.0** **更新日期:2024-01-13**