![我无法在镜像博客时让 wget 成功递归](https://linux22.com/image/88065/%E6%88%91%E6%97%A0%E6%B3%95%E5%9C%A8%E9%95%9C%E5%83%8F%E5%8D%9A%E5%AE%A2%E6%97%B6%E8%AE%A9%20wget%20%E6%88%90%E5%8A%9F%E9%80%92%E5%BD%92.png)
我想为这个博客制作一个离线镜像:http://blogs.gamefilia.com/lord-areg
我在用着:
wget --recursive --level=0 --span-hosts --no-clobber --page-requisites --html-extension --convert-links --no-parent -e robots=off --wait=4 --random-wait --adjust-extension --no-check-certificate --user-agent=Mozilla http://blogs.gamefilia.com/lord-areg/
但我只得到index.html
,无法得到任何子目录......而且我需要所有这些
例如:
lord-areg/15-01-2012/47781/boveda-de-articulos-de-silent-hill
lord-areg/01-02-2012/48151/eddie-dombrowski-la-pistola-y-la-pizza-misteriosa
ETC。
答案1
运行 with-d
显示发生了什么:
Location: http://blogs.gamefilia.com/lord-areg [following]
....
Deciding whether to enqueue "http://blogs.gamefilia.com/lord-areg".
Going to "" would escape "lord-areg" with no_parent on.
Decided NOT to load it.
Redirection "http://blogs.gamefilia.com/lord-areg" failed the test.
重定向的页面位于指定区域之外,因此尽管已检索该页面,但在递归时不会遵循其内容。
删除最后一个/
意味着没有重定向,但正如您所发现的,也意味着 wget 不将其lord-areg
视为目录,而是使用前一个/
,因此整个站点匹配:
请注意,对于 HTTP(和 HTTPS),尾部斜杠对于“--no-parent”非常重要。 HTTP 没有“目录”的概念 — Wget 依靠您来指示什么是目录、什么不是。在 'http://foo/bar/', Wget 会认为 'bar' 是一个目录,而 in 'http://foo/酒吧'(没有尾部斜杠),'bar' 将被视为文件名(因此 '--no-parent' 将毫无意义,因为它的父级是 '/')。
所以你需要以其他方式限制结果。 -I lord-areg
几乎可以工作,但会跳过表单的页面/lord-areg?page=1
。为了匹配这些,请更详细地描述所需的 URL:
--accept-regex '^http:\/\/blogs\.gamefilia\.com\/lord-areg[?/]'