Go 2 Think

Just Think

批量下载博客中远程图片并保存到本地 | WordPress 外链图片本地化

前言

我们在写博客和运营网站时,出于方便或速度等原因,可能会在文章中使用放在其它网站图床中的外链图片。这样的好处很明显,既可以节省网站空间和流量,还能加快网站的访问速度和体验。

但使用外链远程图片的缺点也很致命,服务控制权在别人手中,如果有一天服务关掉了,或者开启了防盗链,那么我们文章中的外链图片将会全部失效。

因此最好本地保留一个完整的图片备份,作为保障,方便出问题时能及时恢复图片。

批量下载博客中远程图片

一般可能会想到使用爬虫批量获取网站的远程图片,但是操作比较麻烦。

还好是自己的网站,以 WordPress 博客为例,我们可以直接导出网站的 XML 备份文件,用正则表达式提取文章中的图片链接,然后使用下载工具批量下载。

工具:Sublime Text 编辑器

1. 导出 XML


登陆 WordPress 仪表盘 -> 工具 -> 导出 -> 下载导出 “所有内容”。

download-blog-remote-img-1.png

获得一个后缀名为 .xml 的博客资料备份文件,使用 Sublime 打开该文件,全选复制,然后粘贴进一个新的 Sublime 文档窗口中,保存为 temp.txt。

2. 解析远程图片链接


2.1. 使用正则表达式匹配图片链接

如果要获取全部图片链接的话,使用下面的正则表达式即可匹配全部图片链接。

匹配图片链接的正则表达式:https?://.+\.(jpg|gif|png)

2.2. 解析图片链接,匹配指定来源的图片

但如果要匹配指定来源的图片的话,还需要分析下外链图片的链接格式,以微博图床为例,图片链接格式如下:

https://wx3.sinaimg.cn/mw690/97f224a.jpg

假设我们的目标图片全部是以 https://wx3.sinaimg.cn/ 开头的,那么需要修改匹配规则为:

https?://wx3\.sinaimg\.cn.+\.(jpg|gif|png)

2.3. 完善

2.2 的匹配规则还不完善,因为图片链接后面还有可能带有其它内容影响匹配结果,比如下面的链接也会被匹配到:

https://wx3.sinaimg.cn/mw690/97f224a.jpg?123456.png

后面的 ?123456.png 是多余的,我们需要限制中间内容的长度。

download-blog-remote-img-2.png

中间部分一共 13 个字符(一般是固定的),将匹配规则中的 + 改为 {13},完成:

https?://wx3\.sinaimg\.cn.{13}\.(jpg|gif|png)

3. 用正则表达式批量获取图片链接


回到 Sublime 中的 temp.txt 窗口,按 Ctrl + F 唤出查找工具栏,填入上面编辑好的正则表达式 -> 全查 -> Ctrl + C 复制。

download-blog-remote-img-3-min.gif

将复制的链接贴近新的文档中保存。

4. 下载图片到本地


使用下载工具(猎鹰、迅雷、IDM 等)批量下载获得的外链远程图片链接到本地保存即可。

恢复图片

将图片通过 FTP 等方式,上传到自己的网站空间,或自建云存储空间中,获得图片链接,如 https://example.com/images/xxx.png。

进入 phpMyAdmin 面板,使用 SQL 命令批量替换图片链接为新的。

download-blog-remote-img-3.png

以本文中的例子,就是把 https://wx3.sinaimg.cn/mw690/ 换为 https://example.com/images/。注意保持原图片名称不要修改!

插件

对于 WordPress,也可以使用插件,在博客中下载远程图片并替换原文链接:

结语

使用正则表达式批量获取图片链接的方法适用性比较强,除了 WordPress 其他博客也一样能用。定期备份一次远程图片,如果图床服务比较稳定自然最好,万一服务出问题也能恢复。

WordPress 插件的话是直接把远程图片下载并替换为本地图片,不能作为备份使用,如果要使用图床的话就不行了。

Go 2 Think 原创文章,转载请注明来源及原文链接

原文链接:https://go2think.com/download-blog-remote-img/

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

code