WebSite-Downloader 是一款基于 Python 开发的网站整站下载工具,通过智能多线程技术递归抓取网页及资源文件,构建完整的本地镜像。它支持 HTML、CSS、JavaScript 以及各类媒体资源的批量获取,适用于离线浏览、内容备份或资源迁移场景。
环境准备
首先获取项目源码。确保系统已安装 Python 3.6 或更高版本,该项目采用标准库开发,无需额外依赖包。
git clone https://gitcode.com/gh_mirrors/web/WebSite-Downloader
cd WebSite-Downloader
基础使用流程
配置目标站点
打开 WebSite-Downloader.py 主程序文件,定位到 Manager 类初始化部分(约第 420 行),将占位符替换为实际网址。
manager = Manager('https://你的目标网站.com/')
注意 URL 必须包含协议头(http:// 或 https://),否则可能导致解析失败。
执行下载任务
在终端运行脚本即可启动任务。
python WebSite-Downloader.py
程序会自动创建 {域名}-site/{完整域名} 目录存储文件,并实时输出日志信息,包括当前页面、发现链接数及成功/失败统计。所有日志同时保存至 log.log 文件,便于后续排查。
核心配置优化
线程并发调整
默认配置为 8 个工作线程,采用生产者 - 消费者模型分配资源。可根据网络环境和硬件性能灵活修改。
# 在 Manager 类初始化中修改线程数量
for i in range(8): # 调整为适合的值
...
建议配置:
- 普通网络:4-8 线程
- 高速网络:8-16 线程
- 弱网环境:2-4 线程
存储路径自定义
如需指定特定存储位置,可修改 home_dir 变量定义,实现个性化的文件管理方案。
常见问题排查
任务无法启动
若程序无响应,请按以下顺序检查:
- 确认 URL 格式正确且包含协议头。
- 验证网络连接正常,目标网站可访问。
- 查看
log.log中的详细错误堆栈。
资源下载失败
常见原因包括动态加载(AJAX)、跨域过滤或权限不足。
- 对于动态内容,可能需要配合其他工具处理。
- 检查
is_valid_link()方法中的域名过滤规则。 - 确保程序对目标目录拥有写入权限。
本地页面显示异常
下载后若样式错乱,通常是因为链接替换逻辑未生效。
- 确认
replace_links()方法执行正常。 - 检查特殊字符处理逻辑。

