一上午搬空一个网站:WebSite-Downloader 让整站离线下载不再依赖网络
【免费下载链接】WebSite-DownloaderA website downloader written with Python项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader
你收藏的文章突然 404、喜欢的教程一夜消失……与其坐等网页蒸发,不如用 WebSite-Downloader——一个纯 Python 编写的网站下载器,把整个网站连结构带资源,完完整整搬回自己的硬盘。
凌晨两点,我收藏的网页没了
半夜整理收藏夹,随手点开半年前存下的一篇技术长文,屏幕上只有冷冰冰的"404 Not Found"。顺着链接再翻,作者域名已经过期,评论区一片哀嚎:"谁有备份?"那一刻我突然意识到:收藏夹只是目录,不是保险柜。
于是我开始找能把整站搬回家的工具。试了几个图形软件,不是收费就是卡死,最后在 GitCode 上撞见了 WebSite-Downloader。它做的事很纯粹——把网页、样式、脚本、图片全部下载到本地,再自动改写链接,让整个网站断网也能正常打开。没有花哨界面,就一个 Python 文件,干净利落。
它其实是个"数字搬家公司"
怎么理解 WebSite-Downloader 呢?把它想成一个尽职的搬家公司:你报一个地址(网站首页),它派出 8 个工人(子线程)挨个房间搬运,把家具、挂画、电线(HTML、CSS、图片、脚本)全部装箱运回你指定的仓库(本地文件夹),连每件东西摆在哪面墙上(链接相对路径)都替你复原。
| 它能做到 | 它做不到 |
|---|---|
| 下载整站 HTML、CSS、JS、图片、字体、音视频 | 抓取纯 JavaScript 动态渲染的内容 |
| 自动改写链接,离线浏览不破图 | 越过登录墙与验证码 |
| 多线程并发下载,速度可观 | 拉取外站 CDN 上的跨域资源 |
| 内置日志,每次失败都有据可查 | 替你判断哪些内容该不该保存 |
所以它最适合这几类人:想给博客定期备份的作者、要搭建离线知识库的学生、以及想把资料站"冷冻"下来的普通用户。
跟随我,把第一个网站搬回家
先说环境:电脑里只要有 Python 3.6 及以上版本就够,不需要安装任何第三方依赖,整个项目就两个文件,上手压力几乎为零。
第一步,把仓库克隆到本地:
git clone https://gitcode.com/gh_mirrors/web/WebSite-Downloader第二步,打开 WebSite-Downloader.py,翻到文件末尾,会看到两行示例代码。把网址换成你想下载的站点,比如我拿一个文档站测试:
manager = Manager('https://example-docs.net/') # 换成你的目标网站 manager.start()第三步,在终端运行python WebSite-Downloader.py,控制台会实时滚动每个链接的处理状态。等全部结束后,工作目录下会出现xxx-site/文件夹。这里有个小彩蛋:程序结束时会连续响铃十声提示你"搬完了",第一次跑别被吓到。
打开文件夹里的 index.html,你会看到和线上几乎一模一样的页面,图片、样式、站内跳转全都正常工作。那一刻的安心感,就像把散落在云端的回忆,一件件收进了自己的抽屉。
三个让它更趁手的玩法
网速快,就把"工人"加到 16 个
默认开 8 个线程并发下载。如果你的网络好、目标服务器也扛得住,可以把range(8)改成range(16)提速。但别贪心,线程开太猛容易把对方服务器惹毛,得不偿失。
想存更多格式,往集合里加后缀
源码中的other_suffixes已经覆盖了常见类型。要是遇到没被收录的格式——比如某种冷门字体或文档后缀,只要在这个集合里追加一个扩展名,它就能被识别并下载。
服务器不稳?调高重试上限
max_tries默认是 3 次,遇到慢吞吞的站点,把它改大能明显提高成功率。每一条失败记录都会写进log.log,出问题时先翻日志,比瞎猜高效得多。
这些坑,我替你踩过了
Q:下载到一半就不动了?A:先看log.log。多半是目标站点超时,把重试次数调高、或换个网络环境再跑一次,基本能解决。
Q:本地打开网页,图片全裂、样式全乱?A:八成是资源挂在外部 CDN 上,而 WebSite-Downloader 只搬站内资源。要么手动补下载,要么优先选择资源自托管的站点。
Q:页面抓下来是空白骨架?A:这通常是"单页应用"或 JS 动态渲染的站点,下载到的 HTML 本身就是空壳。遇到这类网站,换个静态内容的站点下更实在。
Q:担心磁盘被塞爆?A:大型站点动辄几个 G。建议先拿一个小频道或子页面试跑,估算体积再决定要不要全量下载。
把重要内容握在自己手里
说到底,WebSite-Downloader 不只是个玩具,而是你数字资产的备份工具。把常看的文档、维护的站点定期"搬一次家",就算哪天服务器宕机、域名过期,你的内容都还在自己的硬盘上安然无恙。
最后提醒一句:动手之前,请先确认目标网站允许被镜像,尊重版权、遵守 robots.txt,也别把下载频率调得太狠。工具是拿来安心的,不是拿来惹麻烦的。
下次再刷到喜欢的网页,别只点收藏了——把它带回家吧。
【免费下载链接】WebSite-DownloaderA website downloader written with Python项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考