长时间采集与防休眠配置
在执行大批量、多页或定时采集任务时,窗口最小化、电脑睡眠、浏览器自动休眠标签页都会导致采集任务停滞,甚至出现“任务显示已完成,但导出的数据全为空”的隐蔽故障。
本篇讲清楚背后的运行机制,并提供彻底关闭系统休眠与浏览器节电限制的标准配置步骤。
极简速记(两个核心原则)
- 采集进行期间,切勿将浏览器窗口最小化,保持窗口在桌面上可见。
- 笔记本电脑挂机时,务必插上电源适配器。
若需长时间稳定挂机运行,请直接参照第三节完成浏览器与操作系统的防休眠配置。
一、后台受限时的三种异常表现
| 触发场景 | 浏览器底层机制 | 实际看到的表象 |
|---|---|---|
| 浏览器窗口最小化 / 标签页长期置于后台 | 浏览器自动停止页面渲染、暂停动画与定时器,懒加载内容停止请求 | ⚠️ 极其隐蔽:采出 0 行数据,但任务依然显示「已完成」 |
| 标签页被浏览器休眠 (内存节省程序 / 睡眠标签) | 网页上下文被完全冻结,停止处理所有脚本消息 | 任务停滞在原地;一旦点击激活该标签页,任务立即自动继续跑 |
| 需要人工交互 (弹出验证码 / 登录过期) | 提示信息出现在后台不可见的标签页中 | 任务自动挂起并等待,表面看似卡死 |
为什么采空了却不报错?(重点避坑)
现代 Chromium 浏览器为了节省电量与内存,会对不可见窗口(最小化)进行极为严格的资源压制:不再计算页面元素坐标、不再触发视口曝光事件。
此时扩展去提取列表,页面反馈的就是一个“空的 HTML 容器”,扩展会判定为“当前页确实没有数据”,从而平稳收尾退出。因此,遇到跑完数据却为空时,首先排查是否最小化了窗口。
二、扩展内置的稳定保障机制
为了最大程度规避后台冻结,九头虫 Agent 底层已默认内置了三项防护逻辑:
- 主动拉起前台标签页:定时任务与批量采集触发时,系统会主动新建一个前台活动标签页加载网页。这是为了保证页面处于激活渲染态,绝非恶意弹窗弹窗骚扰。它仅在浏览器内部切换,不会抢占你在其他办公软件中的打字焦点。
- 休眠自愈而不是报错退出:若页面被系统短暂休眠,心跳检测机制会判定为“跳过本次检查”而不是直接判作任务崩溃。一旦你切回该标签页,流程会自动续跑。
- 日志清晰标注状态:当休眠发生时,执行日志中会留下中性标记:
运行页被浏览器休眠(后台标签页),心跳自检本拍跳过
这属于状态事实说明,并非程序错误报错。
三、彻底关闭休眠限制(配置指引)
挂机运行依赖两层环境:浏览器层(防标签页被冻结)与操作系统层(防整机睡眠)。两处均需设置:
1. 浏览器层设置(防止标签页冻结)
Chrome 浏览器配置
- 在地址栏输入
chrome://settings/performance并按回车,直达「性能」配置页。 - 找到「内存节省程序」(Memory Saver):
- 方案 A(最稳妥):直接关闭「内存节省程序」总开关。
- 方案 B(针对性白名单):保持开关开启,但在下方「始终保持这些网站处于活跃状态」一栏点击「添加」,将你经常采集的目标网站根域名填入白名单。
Microsoft Edge 浏览器配置
- 在地址栏输入
edge://settings/system并按回车,直达「系统和性能」页。 - 找到「通过睡眠标签页保存资源」选项,直接将其总开关关闭。
- 若不希望全局关闭,可在其下方的「不使这些站点进入睡眠状态」中点击「添加」,填入常用采集站点。
2. 操作系统层设置(防止整机进入睡眠)
区分「屏幕关闭」与「系统睡眠」
- 关闭显示器(屏幕变黑):不影响采集。显卡降低能耗,但主板、CPU、网络与浏览器依然全速运行。
- 系统睡眠/休眠:彻底中断采集。整机挂起停机,网络连接断开,所有采集进程全部冻结。
Windows 系统配置
- 按快捷键
Win + I打开系统设置:- Win 11:点击「系统」→「电源和电池」→ 展开「屏幕和睡眠」。
- Win 10:点击「系统」→「电源和睡眠」。
- 将「睡眠」项下的「接通电源时」和「使用电池时」全部修改为 「从不」。
- 笔记本专属(关键一步:防合盖睡眠):
打开「控制面板」→「硬件和声音」→「电源选项」→ 点击左侧「选择关闭盖子的功能」,将「关闭盖子时」设置为 「不采取任何操作」。设置完成后,合上笔记本屏幕挂机也不会中断采集。 - 关闭节电模式:在「电池」设置中,确保拔掉电源时不自动进入激进的「节电模式」。
macOS 系统配置
- 打开「系统设置」→ 进入「锁定屏幕」。
- 将「使用电源适配器时闲置关掉显示器」设为所需时间,将「显示器关闭时防止自动睡眠」开关开启。
- 笔记本机型在「电池」→「选项」中,开启「当显示器关闭时在电源适配器上防止睡眠」。
四、如果已经发生采空或中断,如何补救
被系统休眠污染过的数据往往是不完整的,建议作废重跑:
- 先改环境:按照第三节检查并关闭浏览器标签休眠与电脑睡眠设置。
- 清理半截数据:进入「数据存储」,将刚才跑空的脏数据集点击删除。
- 重新拉起任务:
- 手动工作流:保持窗口在屏幕上可见,点击「手动启动」重新采集。
- 定时任务:无需重新创建任务。错过的周期,在浏览器重新恢复活跃后会自动补跑一次(系统策略为补跑一次,不排队重叠涌入)。
五、如何排查本次运行是否受休眠影响
若发现本次采集异常,可按以下三步核实:
- 对比条数:数据存储中的条数是否严重低于页面实际展示总数。
- 查验日志:进入执行日志,搜索是否包含
被浏览器休眠、心跳自检本拍跳过或页面未响应等记录。 - 复盘现场:任务运行期间窗口是否被最小化?电脑是否曾合盖或断开电源?
六、长任务稳定运行的最佳实践
- 需求中增加加载缓冲:在长列表或滚动页面需求末尾主动约定缓冲时间,例如:
每次翻页后等待 3 秒。 - 超大规模任务拆批:单次处理几千页的任务,建议拆解为多个子清单分批运行。
- 合理安排定时计划:将定时任务配置在电脑日常处于点亮开机的工作时段(如工作日上午 09:00),避开整机断电的深夜。