如何批量自动下载离线网页并实现文件名自动按序递增?
核心代码修改
你标记的空缺位置只需添加1行代码即可,循环变量y本身就是从1开始递增的行号,刚好匹配你要的文件名规则:
shell.SendKeys(y.toString());
按CTRL+S弹出保存对话框后,文件名输入框默认是全选状态,直接发送y的字符串值就会覆盖默认文件名,实现自动按行号命名。如果保存对话框加载速度不稳定,可以适当拉长CTRL+S后的等待时长,避免按键发送到错误窗口。
修改后完整代码
document.selection.StartOfDocument(); nLines = document.GetLines(); for( y = 1; y < nLines; ++y ) { str = document.GetLine( y ); if( str.length != 0 ) { document.selection.OpenLink(); Sleep( 5000 ); shell.SendKeys( "^s" ); Sleep( 1000 ); // 可根据实际加载速度调整这个值 // 自动填入行号作为文件名 shell.SendKeys(y.toString()); shell.SendKeys( "~" ); Sleep( 500 ); shell.SendKeys( "%{F4}" ); Sleep( 500 ); } document.selection.LineDown(false,1); } alert( "Finished Saving" );
可选替代方案
- 如果你觉得模拟按键稳定性不足(容易受弹窗、焦点偏移影响),可以改用无头浏览器工具实现批量下载,直接通过代码指定文件名和保存格式,不需要模拟用户操作
- 也可以使用SingleFile工具的命令行版本,直接传入URL列表批量导出单文件网页,支持自定义文件名规则,运行效率和准确率都高于模拟按键宏
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

