26 Commits
Author SHA1 Message Date
hz4th_coder 143a3d5c89 v1.4.3 任务结束保存状态前应用排除规则, 防止覆盖运行中配置的队列清理 2026-08-14 10:54:41 +08:00
hz4th_coder 57d45d901b v1.4.2 屏蔽排除规则自动清理队列: 设置 exclude 后待爬队列同步移除命中 URL
- engine.url_excluded: 与 filter_links 同逻辑的排除判定辅助函数
- 保存 auto 配置时, 若 exclude 规则变化且任务未运行, 自动从 pending 队列
  剔除命中规则的 URL (visited 已爬标记保留)
- 排除输入框文案优化
- cnblogs-auto 已配置 exclude=[MyComments.html, OtherPosts.html, /comments], 清理 546 条用户中心页
2026-08-14 10:44:31 +08:00
hz4th_coder 950f5af5ea v1.4.1 新增「重爬失败页」: 一键把失败页面重新加入待爬队列
- 后端 POST /api/tasks/<tid>/retry-failed: 从指定 run 提取 FAIL 页面,
  解除 visited 标记并注入待爬队列头部(去重, 已排队的不重复注入)
- 前端详情页 run 面板新增「🔄 重爬失败页 (N)」按钮(auto 模式且有失败页时显示),
  点击后自动注入并触发继续爬取
2026-08-14 10:36:00 +08:00
hz4th_coder ec053266a7 v1.4.0 修复反爬误判+浏览器崩溃空转, 详情页多元翻页
- 修复反爬误判: is_challenge_page 仅匹配 title 关键词 + html 前 20KB 强特征标记,
  不再全文匹配 captcha/challenge 等词 (博客园正文提 captcha 的页面被误杀)
- 修复浏览器崩溃后空转: 检测 Target page/context/browser closed,
  自动重启浏览器并重试当前 URL (不消耗重试配额, 单页最多重建3次);
  页面读取连续异常3次快速失败; 新增 browser_max_pages 配置定期重启浏览器防内存膨胀
- 详情页多元翻页: 首页/末页/页码列表(带省略号)/页码跳转输入框(回车/GO)/每页条数选择(50/100/200/500)
2026-08-14 10:28:25 +08:00
hz4th_coder 32eebf3dd1 auto 任务运行中实时显示已爬/待爬缓存数; 人工停止后继续爬取验证
- engine: CrawlJob 增加 _auto_visited/_auto_pending 运行中实时状态 (含发现新链接入队后刷新)
- app.py 详情接口: 任务运行中优先读内存实时值, 不再显示上次运行结束的旧数字
- 端到端验证: 人工停止(已爬3,缓存18) → 继续爬取(跳过seed,爬完18页,缓存0) 
- 运行中采样: visited 1→2 实时增长, pending 15→14 同步递减 
2026-08-12 10:19:19 +08:00
hz4th_coder d9c9f0c633 chore: data/auto_state 为运行时爬取状态, 移出版本控制 (.gitignore) 2026-08-12 09:57:53 +08:00
hz4th_coder 909e8e01b5 新增继续爬取: auto 任务达 max_pages 上限停止后, 有待爬缓存链接时可在详情页一键继续
- POST /api/tasks/<tid>/continue: 校验 auto 模式 + pending 非空, skip_seed 启动
- engine skip_seed: 跳过起始网址直接从缓存队列消费 (不重爬 seed, 不重复入 visited)
- 关键修复: max_pages 原为累计上限(visited>=max_pages), 已达标任务无法继续; 继续模式改为按本次新增页数重新计算上限, 可反复继续直到缓存耗尽
- 详情弹窗 auto 任务且有缓存时显示 [ 继续爬取(缓存 N 条)] 按钮
- 端到端测试: max_pages=2 链路 执行(seed+p1,缓存4) → 继续(p2,p3,缓存2) → 继续(p4,p5,缓存0) → 无缓存报错 
2026-08-12 09:57:46 +08:00
hz4th_coder e749d70a43 chore: data/exports 为运行时打包产物, 移出版本控制 (.gitignore) 2026-08-12 09:43:32 +08:00
hz4th_coder 56f30f78c4 新增打包导出: 任务输出目录打包为 zip, 支持网页下载或发送到指定邮箱(默认 wlq@tphai.com)
- GET /api/export?task_id= 打包输出目录为 zip 并下载 (zip 内按任务名建顶层目录)
- POST /api/export/email 打包后通过 send_email.py 发送附件到邮箱, 邮箱可指定, 默认 wlq@tphai.com
- 详情弹窗新增 [📦 打包下载] [📧 发邮箱] 按钮, 打包中按钮禁用防重复点击
- notify.py 重构: send_attachment(subject, body, to, attach) 通用附件发送
- 打包文件存 data/exports/, 自动清理只保留最近 10 个
- 实测: cnblogs-auto 66MB/1606文件 -> 11.9MB zip 仅1.5s; 邮件发送成功 2.2s
2026-08-12 09:41:59 +08:00
hz4th_coder 0482284cc0 反爬拦截不再重试: 判定为反爬类错误(403/429/503/Cloudflare/captcha/验证页等)直接放弃该页, 节省重试时间; 验证页持续8秒即判定反爬, 不再干等满超时(默认60s)
- engine.is_anti_crawl_error: 反爬错误信号关键词判定
- _retry_crawl: 反爬错误直接 break, entry.error 标注'反爬拦截, 跳过重试'
- _wait_page_settle/_settle_wait: 连续8秒检测到验证页即判定反爬尽早返回
- 集成测试: 反爬页 attempts=1 且 8.1s 放弃; 非反爬错误仍 attempts=retry_count+1 正常重试
2026-08-12 09:37:23 +08:00
hz4th_coder 796e667533 性能优化: 任务列表瘦身+详情分页+auto状态独立存储+磁盘统计缓存+db异步同步; 统计数值未读取时显示-
- /api/tasks 响应 1.57MB -> 12KB (latest_run 只带摘要, 一次读 runs.json)
- /api/stats 磁盘占用加 30s 缓存, 去除重复全量读
- 详情接口分页返回 results (默认100条/页), 前端表格分页+页码跳转
- auto 任务 pending/visited 队列迁移到 data/auto_state/ 独立文件 (tasks.json 1.6MB -> 14KB)
- MySQL 同步改后台线程异步执行 (db.sync_run_async/upsert_task_async), 不再阻塞爬虫和 API
- 启动时自动迁移存量 auto 状态
- 统计/回收站/运行中数值在未读到真实数据前显示 '-'
2026-08-12 09:28:16 +08:00
hz4th_coder 66ba1a7cfc v1.0.14: 自动爬取支持深度/页数无限制(默认0/1000), 待爬链接持久化缓存队列(停止后续爬), 起始网址不去重, 清空缓存API 2026-08-11 21:07:31 +08:00
hz4th_coder 3ad3d00ca8 v1.0.13: 自动爬取改为持续递归(无深度限制, 爬到无新链接为止), max_pages作安全上限(默认200) 2026-08-11 19:45:51 +08:00
hz4th_coder aa0c2f56d0 v1.0.12: crawl_results 合并 html_file/txt_file/meta_file 为单一 base_file(同前缀不同后缀), 含存量数据自动迁移 2026-08-11 19:35:55 +08:00
hz4th_coder bf6be47c01 v1.0.11: 新增历史记录回填脚本 backfill.py(幂等, 支持指定任务), 补齐数据库功能上线前的爬取记录 2026-08-11 19:29:57 +08:00
hz4th_coder abde505d32 v1.0.10: 修正数据库连接信息(uni_crawler/wleD6x2T, 库uni_crawler) 2026-08-11 19:27:18 +08:00
hz4th_coder 9cd5b29644 v1.0.9: 爬取记录入库MySQL(crawler库: 任务/运行/结果三表, 内容不入库只存元数据, OK/FAIL状态标记) 2026-08-11 19:23:35 +08:00
hz4th_coder 5a137514e8 v1.0.8: 自动爬取URL规范化去重(锚点/跟踪参数/尾部斜杠/默认端口) + 修复反爬启发式误伤小页面 2026-08-11 17:57:59 +08:00
hz4th_coder 13a760fa6f v1.0.7: 任务列表按模式分组展示(批量/定时/自动各占一行, 空组隐藏) 2026-08-11 15:40:44 +08:00
hz4th_coder add2cea545 v1.0.6: 导入网址文件增加追加/覆盖处理方式选择(默认追加) 2026-08-11 15:33:19 +08:00
hz4th_coder 44852f7be7 v1.0.5: 网址列表支持上传txt批量导入(UTF-8/GBK自动识别/去重/行内注释清理) 2026-08-11 15:26:17 +08:00
hz4th_coder e8541a8545 v1.0.4: 基本搜索功能 - 按网址/标题/任务名子串匹配查找已爬内容, 支持跳转预览 2026-08-11 15:21:31 +08:00
hz4th_coder e70a3a877f v1.0.3: 回收站功能 - 删除任务进回收站可恢复, 仅可手动彻底删除/清空 2026-08-11 13:25:28 +08:00
hz4th_coder 1de2a0af54 v1.0.2: 自动爬取试爬取功能 + 每个页面/图片生成操作信息元数据(模式/时间/网址/来源链接/深度等) 2026-08-11 13:20:14 +08:00
hz4th_coder 29176fc66b v1.0.1: 弹窗防误关确认/布局修复/定时任务首次执行时间/日间夜间双主题/总体统计区 2026-08-11 13:02:34 +08:00
hz4th_coder dede5003a4 通用爬虫系统 v1.0.0: 批量/定时/自动爬取 + Web管理界面 + 图片/通知/热更新 2026-08-11 12:44:18 +08:00