# AI LiaoWang Web App 这是一个基于 Python Flask 的网络爬虫管理与数据采集系统。支持自定义脚本爬虫和基于配置的通用爬虫,集成了爬虫源管理、任务采集管理等功能。 ## 功能特性 * **爬虫源管理**: * 支持添加、编辑、删除爬虫源。 * **脚本爬虫**:调用本地 Python 脚本(`app/spider/` 目录下)进行采集。 * **通用爬虫**:通过界面配置 URL、请求方法、Headers、CSS 选择器等参数,无需编写代码即可实现采集。 * **采集管理**: * 创建采集任务,指定关键词和爬虫源。 * 后台多线程执行采集任务。 * 查看采集结果(标题、摘要、来源、链接、封面图)。 * **用户认证**:简单的登录/注销功能。 ## 环境要求 * Python 3.8+ * SQLite (默认内置) ## 安装步骤 1. **克隆项目或下载源码** 2. **创建虚拟环境** ```bash python -m venv venv ``` 3. **激活虚拟环境** * Windows: `venv\Scripts\activate` * Linux/Mac: `source venv/bin/activate` 4. **安装依赖** ```bash pip install -r requirements.txt ``` ## 数据库初始化 首次运行前,需要初始化数据库并创建管理员账号。 ```bash python init_db.py ``` 该命令会: * 创建 `app/app.db` SQLite 数据库文件。 * 创建默认管理员账号:`admin` / `admin`。 * 初始化默认爬虫源(如百度搜索脚本)。 ## 启动应用 ```bash python run.py ``` 启动后,访问浏览器:[http://localhost:5000](http://localhost:5000) ## 使用说明 ### 1. 登录 使用默认账号 `admin`,密码 `admin` 登录。 ### 2. 爬虫源管理 (Spider Management) 进入“爬虫源管理”页面,可以查看现有爬虫或点击“新增”。 #### 新增通用爬虫示例(百度新闻) * **名称**: 百度新闻 * **代码标识**: `baidu_news` * **类型**: `通用配置 (Generic Engine)` * **URL**: `https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&rsv_dl=ns_pc&pn=0` * **请求方法**: `GET` * **搜索参数名**: `word` * **Headers**: 支持 JSON 格式或直接粘贴浏览器 Headers (Key: Value 格式)。 * **Selectors (JSON)**: ```json { "list": ".result-op", "title": "h3 a", "link": {"selector": "h3 a", "attr": "href"}, "abstract": ".c-color-text", "source": ".source-link_Ft1ov .c-color-gray", "cover": {"selector": ".c-img img", "attr": "src"} } ``` ### 3. 采集管理 (Collection Management) * 进入“采集管理”页面。 * 点击“新建采集任务”。 * 输入“采集关键词” (例如: "人工智能")。 * 选择刚才创建的“百度新闻”爬虫源。 * 点击“开始采集”。 * 任务完成后,点击任务卡片查看详细结果。 ## 项目结构 ``` ai-LiaoWangweb-app/ ├── app/ │ ├── routes/ # 路由模块 (Main, AI, Source, Collection) │ ├── spider/ # 爬虫核心逻辑 │ │ ├── engine.py # 通用爬虫引擎 │ │ ├── baidusearch.py # 百度搜索专用脚本 │ │ └── config.json # 爬虫配置文件 │ ├── templates/ # HTML 模板 │ ├── static/ # 静态文件 (CSS, JS, ECharts) │ ├── models.py # 数据库模型 │ ├── __init__.py # 应用工厂 │ └── config.py # 应用配置 ├── venv/ # 虚拟环境 ├── init_db.py # 数据库初始化脚本 ├── run.py # 启动脚本 ├── requirements.txt # 项目依赖 └── README.md # 说明文档 ``` ## 开发与维护 * **添加新的脚本爬虫**: 1. 在 `app/spider/` 下创建新的 `.py` 文件。 2. 实现 `search(keyword, limit)` 函数。 3. 在“爬虫源管理”中添加类型为“自定义脚本”的源,代码标识填写文件名(不含 `.py`)。 * **测试**: * 建议编写独立的测试脚本调用 `GenericSpiderEngine` 或脚本函数进行测试,参考之前的 `test_generic_baidu_news.py` (已移除)。 ## 常见问题 * **lxml 错误**: 如果遇到 `Couldn't find a tree builder with the features you requested: lxml`,请确保安装了 lxml (`pip install lxml`)。系统已内置回退机制,如果没有 lxml 会尝试使用 `html.parser`。