如何用wget镜像Google Sites站点并将链接转换为本地引用?
如何用wget镜像Google Sites站点并将链接转换为本地引用?
我太懂你这种头疼的感觉了——明明用wget把Google Sites的内容下到本地了,结果打开index.html直接跳回线上站点,加了--convert-links也不管用,属实离谱!
问题出在Google Sites的页面结构比较特殊:它的很多链接是动态生成的,而且大量静态资源(图片、样式)都存在googleusercontent.com域名下,之前的命令没覆盖这个域名,导致部分资源和链接没被正确转换。另外,Google Sites的页面里还藏着不少硬编码的绝对路径,wget的默认转换逻辑搞不定这些。
给你两个能解决问题的方案:
方案一:调整wget命令,覆盖所有相关域名
试试这个增强版的wget命令,我自己爬Google Sites的时候亲测有用:
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent --domains sites.google.com,googleusercontent.com -P documents/websites/ https://sites.google.com/view/craig-diana-wilkin/home
给你拆解下关键调整的地方:
--adjust-extension:自动给无后缀的页面补上.html,避免本地打开时浏览器识别不了路径- 新增
googleusercontent.com到--domains:把Google Sites的静态资源域名也纳入爬取范围,这样本地打开时资源不会挂,相关链接也能被转换 - 保留
--page-requisites:确保把页面依赖的所有样式、图片、脚本都下下来,本地打开更完整
方案二:批量替换硬编码的绝对路径
如果上面的命令还是有漏网的链接(毕竟Google Sites的页面有很多动态生成的内容),可以用文本替换工具批量改掉硬编码的绝对路径:
适合Linux/macOS的sed命令
在终端里执行这个命令,把所有指向你站点的绝对链接换成本地相对路径:
sed -i 's|https://sites.google.com/view/craig-diana-wilkin/|./|g' documents/websites/sites.google.com/view/craig-diana-wilkin/home/*.html
适合Windows的手动替换
如果用Windows,直接打开本地的index.html(还有其他HTML文件),用记事本/VS Code的“全部替换”功能,把https://sites.google.com/view/craig-diana-wilkin/替换成./就行。
最后再提两个注意点:
- Google Sites里的动态功能(比如表单、嵌入的Google Docs)本地肯定用不了,因为这些依赖Google的后端服务,wget只能爬静态内容
- 打开本地页面的时候,一定要从你下载的
documents/websites文件夹里直接打开index.html,别点浏览器缓存的旧链接
备注:内容来源于stack exchange,提问作者Wilky
相关产品推荐
相关产品推荐

