wget recursive/mirror 选项不跟随链接

wget recursive/mirror option not following links

我正在尝试镜像一个网站。 wget 似乎做得很好,但它在某些页面上不起作用。

查看manual,命令

wget -r https://www.gnu.org/

应该下载 GNU 页面。它确实做到了。但是,如果我使用另一个页面,例如我个人网站的首页,这将不再有效。

wget -r https://my-personal.website

index.html是下载的,但是none的CSS/JS更不用说递归下载了。下载的只是 index.html.

我试过使用 -U 选项设置 User-Agent,但这也无济于事。 是否缺少导致 wget 在 index.html 之后停止的选项?

更新:我也试过 --mirror 选项,它也不起作用并且表现出相同的行为。

您的网站通过 HTML 中的 <meta> 标签使用一种相对鲜为人知的机器人控制形式。您可以阅读更多相关信息 here。 Wget 将正确遵守此机器人指令中的说明。如果您在尝试递归下载网站时仔细查看 Wget 的调试输出,就会看到这种情况:

no-follow in my-personal.website/index.html: 1

现在,不幸的是,除非您是开发人员之一并且了解代码库,否则这不是一个非常有用的消息。在这种情况下,我会尝试更新消息,使其更清晰一些。当由于 robots.txt 文件而发生此类事情时,我们就是这样做的。

无论如何,修复很简单,禁用机器人解析。虽然这在访问您自己的网站时没有问题,但在对其他人执行此操作时请注意网络服务器。您需要的完整命令是:

$ wget -r -erobots=off https://my-personal.website

编辑:正如承诺的那样,添加了一条改进的消息。参见 here。它现在打印:

no-follow attribute found in my-personal.website/index.html. Will not follow any links on this page