ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

网站离线下载自救指南:一个Python文件把整站搬回家

网站离线下载自救指南:一个Python文件把整站搬回家 网站离线下载自救指南一个Python文件把整站搬回家【免费下载链接】WebSite-DownloaderA website downloader written with Python项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader那天晚上我照例想翻开收藏夹里那篇看了半年的技术教程回车页面惨白只剩一行冰冷的 404。收藏了两年的东西说没就没连声招呼都不打。如果你也经历过这种重要网页说没就没的焦虑那么用 Python 写成的网站离线下载工具WebSite-Downloader正好能帮你把整个网站完整搬回本地——HTML、CSS、JS、图片、字体全打包离线打开依然原样。它不是爬虫是一位整站搬家师傅一句话说清楚WebSite-Downloader 是一个用 Python 写的网站下载器你给它一个网址它顺着页面里的链接把全站资源抓下来存进本地文件夹再自动把页面里的绝对链接改写成相对路径。把它想象成搬家公司就懂了。网站是一栋房子HTML 是墙纸CSS 是灯饰JS 是电路图片是墙上相框。书签只是记下了门牌号门拆了就只剩空气截图是给房子拍了张照片一件家具都搬不走。而这位搬家师傅是整栋连家具带装修一起打包再在你本地复刻出一间一模一样的屋子门牌号都对得上。更难得的是它零依赖。整个项目核心就一个WebSite-Downloader.py不装任何第三方库自带 Cookie 处理和中文编码适配Python 3.6 以上就能直接跑。书签和截图都救不了这种失去书签只存链接网站没了就是没了连个念想都不留截图 / 复制粘贴单页快照样式交互全丢看着像遗照整站下载连结构带资源原样还原离线打开和在线几乎无差。同样存一个网站前两种是留个念想最后一种才是把家搬回来。两分钟把它请进你的电脑先确认本机有 Python 3.6 或更高版本然后打开终端敲两行命令git clone https://gitcode.com/gh_mirrors/web/WebSite-Downloader cd WebSite-Downloader没有pip install没有依赖报错地狱。零依赖就是它两分钟上手的底气。只改一行指向你要搬的那栋楼打开WebSite-Downloader.py翻到文件最后两行if __name__ __main__: manager Manager(https://www.example.com) manager.start()把https://www.example.com换成你真正想下载的网址保存完事。为什么你只需要管这两行因为Manager是搬家总调度——派发链接、去重、判断什么时候收工都是它start()就是按下启动键。剩下那些顺着链接找页面、找资源的脏活累活全在Spider手里。按下回车剩下的交给 8 个搬运工python WebSite-Downloader.py控制台会实时打印进度所有文件存进以域名命名的文件夹比如whsw-site/www.whsw.net/。程序默认开 8 个线程并行抓取重复链接自动跳过连续 60 秒没发现新链接就自动收尾完工时还会叮叮叮响铃提醒你。下载完打开里面的index.html——链接、图片、样式全部本地化和在线访问几乎一模一样。这一刻你会觉得之前对着 404 发呆的自己真是亏大了。嫌慢给搬家公司加点人手网站页面多、8 个线程爬得像乌龟翻到WebSite-Downloader.py里创建线程那段for i in range(8):把range(8)改成range(16)线程翻倍速度通常立竿见影。但别贪心——开到 64、128等于一大群人同时冲进别人家搬东西服务器扛不住你的 IP 也可能被拉黑。从 16 起步视网络状况慢慢调。搬不动的格式写进清单就行有人会问网站里有.webp图片、.psd素材没被下载怎么办在Spider类的__init__里有个other_suffixes集合默认列了js、jpg、png、pdf、zip、mp4等几十种格式。爬虫靠后缀判断这是网页还是资源——网页走解析流程资源直接下载。遇到白名单外的格式加一行就完事self.other_suffixes.add(webp)等于告诉师傅这种家具也给我搬。大文件总超时它早就留了绿色通道几十 MB 的视频、压缩包下到一半就超时代码里其实已经帮你想好了media_suffixes含mp3、mp4、pdf、zip、rar等专门给大文件开绿灯——普通请求超时 20 秒遇到媒体文件自动放宽到 600 秒让大件慢慢搬完。你的网站里有更特殊的超大文件把它加进media_suffixes就能享受同款长超时待遇。如果你踩到以下情况下载完本地打开样式全乱了大概率是资源没下完整或者页面引用了站外 CDN。先翻翻log.log里有没有[failed download]的记录。CDN 属于外部域名工具默认只抓主域名这类资源得手动处理或换思路。程序好像永远跑不完别慌它内置 60 秒空闲检测连续 60 秒没新链接就自动结束还会响铃提醒你收工。下载下来的页面是乱码它会依次尝试utf-8、gb2312、gbk三种编码解码绝大多数中文网站都能正确处理。真不行看log.log里的[UnicodeDecodeError]记录。会不会把整个互联网都爬下来不会。它靠顶级域名top_domain圈住边界只抓目标网站自己的页面和子域名外部链接自动过滤不会越爬越远。最后说句朋友的叮嘱只下载你自己有版权、或允许离线保存的内容尊重网站的robots.txt控制抓取频率别给别人的服务器添麻烦。下一次再面对那个惨白的 404你手里已经握着整站的备份。收藏夹治不了失去但把家整个搬回来可以。现在挑一个你舍不得的网站让这位搬家师傅开工吧。【免费下载链接】WebSite-DownloaderA website downloader written with Python项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表