Нет описания

kinglee 605eafe32e 初始化项目 2 недель назад
app 605eafe32e 初始化项目 2 недель назад
.gitattributes 605eafe32e 初始化项目 2 недель назад
README.md 605eafe32e 初始化项目 2 недель назад
requirements.txt 605eafe32e 初始化项目 2 недель назад
run.py 605eafe32e 初始化项目 2 недель назад

README.md

AI LiaoWang Web App

这是一个基于 Python Flask 的网络爬虫管理与数据采集系统。支持自定义脚本爬虫和基于配置的通用爬虫,集成了爬虫源管理、任务采集管理等功能。

功能特性

  • 爬虫源管理
    • 支持添加、编辑、删除爬虫源。
    • 脚本爬虫:调用本地 Python 脚本(app/spider/ 目录下)进行采集。
    • 通用爬虫:通过界面配置 URL、请求方法、Headers、CSS 选择器等参数,无需编写代码即可实现采集。
  • 采集管理
    • 创建采集任务,指定关键词和爬虫源。
    • 后台多线程执行采集任务。
    • 查看采集结果(标题、摘要、来源、链接、封面图)。
  • 用户认证:简单的登录/注销功能。

环境要求

  • Python 3.8+
  • SQLite (默认内置)

安装步骤

  1. 克隆项目或下载源码

  2. 创建虚拟环境

    python -m venv venv
    
  3. 激活虚拟环境

    • Windows: venv\Scripts\activate
    • Linux/Mac: source venv/bin/activate
  4. 安装依赖

    pip install -r requirements.txt
    

数据库初始化

首次运行前,需要初始化数据库并创建管理员账号。

python init_db.py

该命令会:

  • 创建 app/app.db SQLite 数据库文件。
  • 创建默认管理员账号:admin / admin
  • 初始化默认爬虫源(如百度搜索脚本)。

启动应用

python run.py

启动后,访问浏览器: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):

    {
        "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