ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

如何用 Python 把整个网站离线保存到本地?WebSite-Downloader 上手全攻略

如何用 Python 把整个网站离线保存到本地?WebSite-Downloader 上手全攻略 如何用 Python 把整个网站离线保存到本地WebSite-Downloader 上手全攻略【免费下载链接】WebSite-DownloaderA website downloader written with Python项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader凌晨两点你习惯性点开收藏夹里那位大牛的技术博客准备睡前再刷一篇——404。域名没续费服务器迁移三年收藏的几百篇文章一夜之间变成一坨不会跳转的死链接。你突然意识到网页就像租来的房子房东随时可能收房。其实有个用 Python 写的开源小工具WebSite-Downloader专治这种内容消失焦虑你只要给它一个网址它就会顺着页面里的链接一路爬下去把整站的 HTML、CSS、JS、图片、字体、PDF、视频全部抓回本地再把页面里所有链接改写成相对路径——拔掉网线双击index.html网站照样能逛。三分钟跑通第一次下载整个项目只有一个文件WebSite-Downloader.py只用 Python 标准库Python 3.6 以上就能跑连 pip install 都省了。第一步拿到代码git clone https://gitcode.com/gh_mirrors/web/WebSite-Downloader cd WebSite-Downloader第二步打开WebSite-Downloader.py滚到文件末尾第 424-426 行那里躺着两行示例代码if __name__ __main__: manager Manager(https://www.example.com) manager.start()把https://www.example.com换成你的目标网站就完成了全部配置。第三步运行python WebSite-Downloader.py程序会立刻拉起 8 个子线程并发抓取控制台实时打印每一条处理记录。当所有线程连续 60 秒找不到新链接下载自动结束终端还会滴滴滴连响 10 声提醒你收工。打开以网站域名命名的文件夹比如example-site/www.example.com/双击index.html——一个和线上几乎一模一样的本地网站诞生了。它凭什么能做到两个机制讲人话第一个机制一条快递分拣流水线。主线程Manager是分拣中心8 个Spider子线程是快递员。快递员每抓到一个页面就把页面里新发现的链接扔回分拣中心中心去重后重新派单。谁闲谁接单、抓完就找下一个几百个页面的中小型网站通常几分钟搞定全程不用你干预。第二个机制只搬自己家不乱闯邻居。它不会把整个互联网搬回来——每个链接都要先过一道户口检查通过顶级域名比对只留下属于目标网站的链接外站资源、javascript:伪链接一律过滤。更妙的是链接重写HTML 里的href、srcCSS 里的url(...)全部提取出来按相对路径重新拼好。所以本地页面点哪儿跳哪儿图片样式全部在位就像网站自己搬了个家。顺带一提它连编码都给你兜底了按utf-8 → gb2312 → gbk三级解码中文老网站也不会乱码遇到 mp4、pdf 这类大文件超时时间自动从 20 秒放宽到 600 秒慢慢等你也下得完。一个真实场景把移动图书馆揣进口袋我认识一个前端学习者把某技术博客当成随身图书馆。以前他出差坐高铁隧道里没网只能对着收藏夹干瞪眼。后来他用 WebSite-Downloader 把整个博客下载到笔记本再把xxx-site文件夹同步进手机从此以前高铁隧道里对着 404 叹气现在断网也能随手翻 CSS 布局的经典文章离线全文检索以前网站一改版收藏夹集体报废现在每月花十分钟重新抓一次本地永远是最新版。他也老老实实告诉我下载完的网站偶尔样式会乱——多半是原站用了外部 CDN 或 JS 动态渲染这类站点抓下来会缺胳膊少腿。所以别指望它通吃所有网站静态内容多的博客、文档站才是它的主场。避坑地图你可能踩到的四个坑下载完页面白花花没样式→ CSS/JS 没下全或走了外部 CDN先拿静态站练手别一上来就抓单页应用。页面是 JS 动态渲染的抓回来是个空壳→ 工具不会帮你执行 JavaScript选服务端渲染、内容写在 HTML 里的网站。大网站把硬盘塞满了→ 会真会。先小范围测试或只挑重点栏目抓。控制台飘红一片→ 别慌所有错误都带时间戳记在当前目录的log.log里先看日志再定位多半是目标站超时或反爬换个时段重试即可。下一步现在就动手挑一个你常看的静态技术博客用上面的三分钟流程跑通第一次下载下载完打开本地index.html检查图片样式再翻翻log.log看看哪些资源失败了按需微调第 88 行的range(8)可以改成 16 提速第 134 行的other_suffixes白名单可以加后缀把定期整站备份写进你的内容管理清单——每月花十分钟等于给网站上了份零成本的异地容灾。另外提醒一句工具是中性的请只下载自己有权限或允许存档的内容遵守目标站的 robots.txt更别把下载内容商用传播。链接是脆弱的但本地文件是永恒的。趁网页还在把它搬回家。【免费下载链接】WebSite-DownloaderA website downloader written with Python项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表