立项背景和目标: 日常需要批量采集公开网页数据,市面上的爬虫工具要么依赖繁琐的第三方库,要么缺乏合规保障。目标是做一个"开箱即用、合规优先"的本地爬虫控制台,双击脚本即可启动,无需任何安装。
核心功能: ①粘贴 URL 批量爬取,自动提取标题、正文摘要、图片链接;②自动检查 robots.txt,隐私内容(手机号/身份证)自动过滤;③蜘蛛模式支持递归爬取,可设定最大深度、域名页面上限;④429/5xx 自动冷却限速,连续失败自动停止;⑤内置轻量 NLP 引擎(TextRank 摘要 + TF-IDF 关键词提取 + 中文实体识别),无需大模型;⑥数据存入 SQLite,支持搜索、排序、CSV 导出;⑦SSE 实时日志推送,三色主题切换。
业务流程: 前端(原生 JS)→ HTTP API(Python 内置 http.server)→ 爬虫引擎(状态机调度)→ Fetcher(请求/重试/代理/内容解析)→ NLP 处理 → SQLite 持久化 → 前端实时展示。
整体架构: 前后端分离,后端纯 Python 标准库(无 Flask/Django),前端原生 JS(无框架)。核心模块:爬虫引擎(状态机)、Fetcher(HTTP/重试/代理)、NLP 引擎、SQLite 数据库层、SSE 日志流。
我的责任模块: 独立完成全部模块,包括爬虫状态机(idle/running/paused/cooldown)、蜘蛛递归模式、TF-IDF+TextRank NLP 引擎(jieba 可选降级为字符 n-gram)、滑动窗口限速器、三主题前端 UI。
难点与解决: ①零依赖约束下实现 NLP:用字符 2-gram 替代分词,TextRank 用纯 Python 图算法实现,jieba 作可选增强;②并发与线程安全:用 threading.Lock 保护状态机,deque 作线程安全队列;③robots.txt 合规检查与隐私过滤正则内置到 Fetcher,保证每次请求前自动触发。