news 2026/8/15 1:55:33

网站离线下载终极指南:3 步用 Python 把整个网站完整搬回本地

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网站离线下载终极指南:3 步用 Python 把整个网站完整搬回本地

网站离线下载终极指南:3 步用 Python 把整个网站完整搬回本地

【免费下载链接】WebSite-DownloaderA website downloader written with Python项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader

收藏了半年的技术教程,某天点开只剩 404;出差路上想翻官网文档,却没网可用——如果你也有过这种"重要网页说没就没"的焦虑,那么用 Python 写成的网站离线下载工具WebSite-Downloader,正好能帮你把整个网站完整搬回本地。它是 GitHub 加速计划下的一个单文件项目,核心代码就一个WebSite-Downloader.py,却能把 HTML、CSS、JS、图片、字体全部下载并自动重写链接,让你离线也能原样浏览。

一句话看懂:它是什么,凭什么比"存书签"强

WebSite-Downloader 是一个用 Python 编写的网站下载器:给它一个网址,它会像蜘蛛一样顺着页面里的链接爬遍整个站点,把网页和资源全存到本地文件夹,再自动把网页里的绝对链接改写成相对路径,让离线打开依然结构完整。

和传统做法对比一下,你就知道它的价值:

保存方式能不能保留内容能不能离线看结构是否完整
浏览器书签只存链接不能
截图 / 复制粘贴单页快照丢样式丢交互
WebSite-Downloader整站下载完整还原

核心源码只有一个文件:WebSite-Downloader.py 的Manager(管理调度)和Spider(爬取下载)两个类,结构清晰,特别适合新手边用边学。

第 1 步:先装好运行环境,把项目拉到本地

只要你的电脑有 Python 3.6 或更高版本就够用,它不依赖任何第三方库,全部用 Python 自带模块实现,装完即用。打开终端执行:

git clone https://gitcode.com/gh_mirrors/web/WebSite-Downloader cd WebSite-Downloader

这一步在做什么:把项目源码克隆到本地。因为项目零依赖,所以省掉了pip install的环节,这也是它"5 分钟上手"的底气所在。

第 2 步:改一行代码,指向你想下载的网站

打开WebSite-Downloader.py,翻到文件末尾,你会看到两行示例代码:

if __name__ == '__main__': manager = Manager('https://www.example.com') manager.start()

'https://www.example.com'换成你真正想下载的网址,比如:

manager = Manager('https://www.whsw.net/')

为什么这么写Manager是爬虫的"总指挥",它负责把链接派发给 8 个爬虫线程、去重、判断什么时候结束;start()就是按下启动键。你只需要关心这两行,剩下的事全交给它。

第 3 步:运行脚本,坐等完整网站落地

保存后,在终端运行:

python WebSite-Downloader.py

控制台会实时打印进度,所有文件会保存到以域名命名的文件夹里,比如whsw-site/www.whsw.net/。下载完成后,用浏览器打开里面的index.html——你会发现链接、图片、样式全部本地化了,和在线访问几乎一模一样。

这一步在做什么:程序会顺着首页链接递归抓取同域名下的所有页面,解析 HTML 和 CSS 里的资源引用,自动跳过外链和重复链接,60 秒内没有新链接出现就自动收尾。整个流程你不需要再敲任何命令。

下载太慢怎么办:调高并发线程数提速

应用场景提问:网站页面很多,8 个线程爬起来像乌龟爬,怎么加速?

打开WebSite-Downloader.py第 88 行,找到这段代码:

# 默认开启 8 个子线程 for i in range(8): self.spiders.append(Spider(home_dir, home_url, self.link_queue, scheme, top_domain, max_tries))

range(8)改成range(16),线程数翻倍,下载速度通常也会明显加快。但注意别设太高,比如 64 甚至 128,否则会给目标服务器造成过大压力,反而容易被封 IP。建议从 16 开始试,视网络状况再微调。

想保存更多格式:扩展文件类型白名单

应用场景提问:网站里有特殊的文件类型(比如.webp图片、.psd素材)没被下载,怎么办?

Spider类的__init__方法里有一个other_suffixes集合,里面列了默认支持的文件格式:jsjpgpngpdfzipmp3mp4等几十种。只要把新后缀加进去即可,例如:

self.other_suffixes.add('webp')

为什么这么写:爬虫靠后缀判断"这是个网页还是资源文件"。网页走解析流程,资源文件直接下载。你在白名单里加一个后缀,等于告诉爬虫"这类文件也给我直接搬回家"。

视频压缩包下不动?延长大文件下载超时

应用场景提问:网站里有几十 MB 的视频或压缩包,下载到一半就超时失败,怎么办?

代码里其实已经帮你留了后手:media_suffixes集合(包含mp3mp4pdfziprar等)专门给大文件开"绿色通道"——普通请求超时是 20 秒,遇到这些媒体文件会自动放宽到 600 秒,避免大文件半途夭折。如果你的网站里有更特殊的超大文件类型,把它加进media_suffixes就能享受同样的长超时待遇。

避坑问答:新手最常踩的 4 个坑

Q1:下载完本地打开,网页样式全乱了?大概率是资源没下载完整,或者页面引用了站外 CDN。先看log.log里有没有[failed download]的记录;CDN 跨域资源属于外部域名,工具默认只抓主域名,这类资源需要手动处理或换工具。

Q2:程序好像"永远跑不完"?别急,它内置了 60 秒空闲检测:只要连续 60 秒没有发现新链接,程序就会自动结束,还会"叮叮叮"响铃提醒你下载完成。

Q3:下载下来的页面是乱码?工具会自动尝试utf-8gb2312gbk三种编码解码,绝大多数中文网站都能正确处理。如果仍乱码,可以检查log.log里的[UnicodeDecodeError]记录。

Q4:会不会把整个互联网都爬下来?不会。工具通过顶级域名(top_domain)限制爬取范围,只抓取目标网站自己的页面,外部链接会被自动过滤,不会越爬越远。

行动清单:现在就动手下载第一个网站

  1. 确认本机 Python 版本 ≥ 3.6,克隆项目到本地
  2. 选一个简单的静态网站作为首次试验对象
  3. 改掉WebSite-Downloader.py末尾那一行 URL,运行脚本
  4. 打开生成的xxx-site/xxx/文件夹里的index.html,验证离线效果
  5. 对照本文进阶玩法,按需调线程数、加文件后缀,把工具调成你自己的版本

重要提醒:请只下载自己拥有版权、或允许离线保存的内容,尊重网站的robots.txt,控制抓取频率,别给目标服务器添麻烦。

在这个信息随时可能消失的时代,把重要的内容掌握在自己手里,本身就是一种安全感。WebSite-Downloader 就像你给网站拍的一张"整站快照"——收藏夹里的 404,从今天起,不会再有了。现在就挑一个你舍不得的网站,动手试试吧。

【免费下载链接】WebSite-DownloaderA website downloader written with Python项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/15 1:55:07

【单片机课设毕设项目】基于 STM32 的多模式心率血氧监测声光报警装置设计 基于 STM32 的本地显示与远程管控一体化健康监测系统(013203)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/8/15 1:54:28

当动漫人物“入职”金融科技:IP数字化与虚拟经济的未来

引言:从二次元到数字资产 在数字浪潮席卷全球的今天,金融科技(FinTech)的边界正在被不断拓宽。一个引人注目的新趋势是:那些曾经只存在于屏幕和漫画书中的动漫人物,正以“数字员工”、“虚拟代言人”或“加…

作者头像 李华
网站建设 2026/8/15 1:54:23

Python 死锁排查全攻略:从线程卡死到锁依赖定位与工程化修复

Python 死锁排查全攻略:从线程卡死到锁依赖定位与工程化修复 在 Python 并发开发中,有一种故障比异常更让人头疼。 它没有 Traceback,没有明显报错,CPU 可能也不高,日志甚至停留在一句看似正常的: 开始处…

作者头像 李华
网站建设 2026/8/15 1:52:59

FGO材料规划工具Chaldea:攒石、刷本、模拟战斗,一次理顺

FGO材料规划工具Chaldea:攒石、刷本、模拟战斗,一次理顺 【免费下载链接】chaldea Chaldea - Yet Another Material Planner and Battle Simulator for Fate/Grand Order aka FGO 项目地址: https://gitcode.com/gh_mirrors/ch/chaldea Chaldea是…

作者头像 李华
网站建设 2026/8/15 1:48:24

SAP内部订单修改:超越KO02,掌握ABAP函数模块与状态管理

1. 从一次紧急修改说起:为什么内部订单的修改如此棘手?那天下午,我刚准备收拾东西下班,业务部门的同事火急火燎地跑过来,说一个正在执行的营销活动内部订单(Internal Order)预算填错了&#xff…

作者头像 李华