尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

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

网站离线下载终极指南: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集合里面列了默认支持的文件格式js、jpg、png、pdf、zip、mp3、mp4等几十种。只要把新后缀加进去即可例如self.other_suffixes.add(webp)为什么这么写爬虫靠后缀判断这是个网页还是资源文件。网页走解析流程资源文件直接下载。你在白名单里加一个后缀等于告诉爬虫这类文件也给我直接搬回家。视频压缩包下不动延长大文件下载超时应用场景提问网站里有几十 MB 的视频或压缩包下载到一半就超时失败怎么办代码里其实已经帮你留了后手media_suffixes集合包含mp3、mp4、pdf、zip、rar等专门给大文件开绿色通道——普通请求超时是 20 秒遇到这些媒体文件会自动放宽到 600 秒避免大文件半途夭折。如果你的网站里有更特殊的超大文件类型把它加进media_suffixes就能享受同样的长超时待遇。避坑问答新手最常踩的 4 个坑Q1下载完本地打开网页样式全乱了大概率是资源没下载完整或者页面引用了站外 CDN。先看log.log里有没有[failed download]的记录CDN 跨域资源属于外部域名工具默认只抓主域名这类资源需要手动处理或换工具。Q2程序好像永远跑不完别急它内置了 60 秒空闲检测只要连续 60 秒没有发现新链接程序就会自动结束还会叮叮叮响铃提醒你下载完成。Q3下载下来的页面是乱码工具会自动尝试utf-8、gb2312、gbk三种编码解码绝大多数中文网站都能正确处理。如果仍乱码可以检查log.log里的[UnicodeDecodeError]记录。Q4会不会把整个互联网都爬下来不会。工具通过顶级域名top_domain限制爬取范围只抓取目标网站自己的页面外部链接会被自动过滤不会越爬越远。行动清单现在就动手下载第一个网站确认本机 Python 版本 ≥ 3.6克隆项目到本地选一个简单的静态网站作为首次试验对象改掉WebSite-Downloader.py末尾那一行 URL运行脚本打开生成的xxx-site/xxx/文件夹里的index.html验证离线效果对照本文进阶玩法按需调线程数、加文件后缀把工具调成你自己的版本重要提醒请只下载自己拥有版权、或允许离线保存的内容尊重网站的robots.txt控制抓取频率别给目标服务器添麻烦。在这个信息随时可能消失的时代把重要的内容掌握在自己手里本身就是一种安全感。WebSite-Downloader 就像你给网站拍的一张整站快照——收藏夹里的 404从今天起不会再有了。现在就挑一个你舍不得的网站动手试试吧。【免费下载链接】WebSite-DownloaderA website downloader written with Python项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表