网站消失的前一晚,我用 1 行代码把整站离线下载到了本地——WebSite-Downloader 不踩坑记录

📅 发布时间:2026/8/14 16:01:14
网站消失的前一晚,我用 1 行代码把整站离线下载到了本地——WebSite-Downloader 不踩坑记录 网站消失的前一晚我用 1 行代码把整站离线下载到了本地——WebSite-Downloader 不踩坑记录【免费下载链接】WebSite-DownloaderA website downloader written with Python项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader朋友的博客因为服务器续费逾期一夜之间全部下线。书签还在页面却没了。这种事其实不罕见网页生来脆弱域名会过期、内容会被删、平台会倒闭而你收藏夹里那些链接从来都不真正属于你。WebSite-Downloader 是一个用 Python 写的网站离线下载工具它做的事情很朴素——把整站连同 HTML、CSS、JS、图片、字体一并抓回硬盘整理成一个本地文件夹断网也能照常浏览。这篇笔记写给所有想给网站留一份本地副本、又不想碰复杂爬虫框架的人。它和浏览器另存为的区别藏在链接重写里浏览器另存为网页本质是复制当前这一页。图片、样式、脚本依然指向线上地址一断网页面立刻打回原形。WebSite-Downloader 的思路完全不同它把整站当成一张关系网顺着链接挨个抓取再把页面里所有引用改写成相对路径让本地副本自成一体。原理并不玄乎。主线程的 Manager 维护一个待抓链接队列默认 8 个 Spider 子线程并发取链接处理HTML 里的 href、src 和 CSS 里的 url() 被正则抽出来逐一判断是否属于目标站的顶级域名属于才入队继续抓取抓完再把绝对地址重写成../images/logo.png这类相对路径。图片、PDF、视频等资源则按扩展名直接下载最终落地成一个以域名命名的文件夹。整个逻辑压缩在单个 WebSite-Downloader.py 文件里想研究实现细节直接打开翻就行。值得多说一句链接过滤只放行同一顶级域名代码里的 top_domain 判断所以它不会顺手把你的整个互联网搬回家。至于它到底怎么被启动起来下一步其实只需要改一行代码。把整个网站下载到本地的最短路径改一行跑一次最短的运行路径只有三步克隆仓库、打开文件、改一行。git clone https://gitcode.com/gh_mirrors/web/WebSite-Downloader cd WebSite-Downloader翻到 WebSite-Downloader.py 的最后两行把占位地址换成目标站if __name__ __main__: manager Manager(https://www.example.com) manager.start()然后执行python WebSite-Downloader.py控制台会打印实时进度抓完还会响铃提醒。产物落在类似example-site/www.example.com/的目录里双击 index.html 就能离线浏览整个网站下载结果所有资源均已本地化。跑通之后有三个旋钮值得认识。第一个是并发线程数Manager 构造时range(8)默认开 8 个子线程网络好的话可以调到 16但别贪心给目标服务器留口气。第二个是 Spider 里的 other_suffixes 集合遇到新格式比如 webp往里加一个后缀即可。第三个是 max_tries 3单个链接最多重试三次失败的请求都会记进 log.log排查问题先看它。跑通只是开始真正会绊倒人的是它抓不下来的那部分。离线浏览网站之前先认识 4 个它抓不下来的东西工具再聪明也有边界而且边界往往藏在细节里。️第一个坑是动态内容。靠 JavaScript 运行时才渲染出来的页面抓回来只剩骨架SPA 单页应用尤其明显——这类站点想离线下载基本得另想办法。第二个坑是跨域资源。图床、CDN 上的文件因为域名不同会被过滤掉抓完发现样式全丢先怀疑这个原因再去检查 CSS 是否真的落盘了。第三个坑是编码。工具对响应做 utf-8、gb2312、gbk 三级解码尝试老站基本都能蒙对但极端情况会直接跳过并记入日志。第四个是信任问题源码默认不校验 HTTPS 证书为的是兼容证书过期的站点代价是它不替你做安全判断抓取来源不明的网站请自行斟酌。最后是老生常谈的合规红线下载前先看一眼 robots.txt线程数别开太狠抓下来的内容仅限个人备份与学习用途。大站动辄几个 GB建议先只抓首页估个体量再决定要不要整站拉取。把这些边界摸清楚就该聊聊它真正值得托付的场景了。它真正擅长的场景和一句该说的提醒说回值得用它的地方。我见过最舒服的用法是把开源电子书、API 文档、技术教程整站下载成离线知识库飞机上、隧道里随时可查也有人拿它给个人站点做月度备份与网页快照互为补充。这类静态或服务端渲染的内容站正是它的主场。抓下来的 HTML 已经是完整资产接下来能做的事就多了——转成 PDF 归档、提取全文做本地检索、甚至二次加工成自己的笔记体系。不妨现在就挑一个你舍不得丢的静态博客改一行代码给它留一份本地副本。至于抓下来的内容能玩出什么花样那就是下一个值得琢磨的问题了。【免费下载链接】WebSite-DownloaderA website downloader written with Python项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考