Wget在跟随重定向后不会递归下载。

9

这是我使用wget的方式:

wget --recursive --level=10 --convert-links btlregion.ru

这个页面会重定向到这个页面。如果我像上面那样运行wget,它会跟随重定向,但只下载该页面 - 不会递归地下载所有页面。
我已经尝试了--max-redirects=1--domains=www.btlregion.ru,但它不起作用。
如果我直接在这个页面上调用wget,递归下载就可以正常工作。

1
你能告诉我们你真正使用的网站是什么吗? - John Zwinck
@DmitryMikhaylov:你期望得到什么?实际的重定向HTTP响应? - PMF
抱歉,我还是有点跟不上。对我来说,上面的命令确切地做了它应该做的事情:它有效地从example.com下载了index.html。由于这是此主机上唯一的页面,因此没有其他事情可做。 - PMF
@PMF,我想这个命令应该是下载整个网站,而不仅仅是一个特定的页面。 - Dmitrii Mikhailov
2
好的,我可以确认:如果Wget首先必须遵循重定向,则不会递归下载。我会调查这个问题... - sleske
显示剩余6条评论
1个回答

21
你需要使用 --span-hosts (-H) 和 --domains 来一起使用:
wget --recursive --level=10 --convert-links -H \
--domains=www.btlregion.ru btlregion.ru

--span-hosts选项可以让wget跟踪指向其他域名的链接,而--domains选项则限制其只跟踪列出的域名链接,以避免下载整个互联网。

--domains选项会与直觉有些相悖,只有与-H选项一起使用才有效。文档中提到了这一点,但表达方式比较难理解。


我刚刚发现了一个问题。当我使用 --span-hosts 选项时,wget也会请求外部URL。 - Dmitrii Mikhailov
@DmitryMikhaylov:您可以使用“--domains”来限制“--span-hosts”的影响范围。我已经编辑了我的回答。 - sleske
我使用 --domains=domain.com,www.domain.com,但在我的情况下由于某些原因它不起作用。 - Dmitrii Mikhailov
@DmitryMikhaylov:抱歉,我不知道。也许你可以在superuser.com上提出一个新问题,那里更适合这个问题。你可以附上这个问题的链接。 - sleske

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接