wgetrecursion下载,但是我不想关注所有的链接

我试图使用wget镜像网站,但我不想下载大量的文件,所以我使用wget的--reject选项不保存所有的文件。 但是,wget仍然会下载所有文件,然后删除文件,如果它匹配我的拒绝选项。

有没有什么方法可以告诉wget不遵循某些链接,如果他们匹配一些shell通配符? 如果wget不能做到这一点,是否有一些其他常见的Linux命令可以做到这一点?

你也可以尝试HTTrack ,它具有IMO更灵活和直观的包含/排除逻辑。 像这样的东西…

 httrack "https://example.com" -O ExampleMirrorDirectory \ "-*" \ "+https://example.com/images/*" \ "-*.swf" 

规则将按顺序应用,并将覆盖以前的规则…

  1. 排除一切
  2. 但是包括https://example.com/images/ *
  3. 但排除以swf结尾的任何内容

看起来这在wget中是不可能的

在“man wget”的–reject部分下:

“请注意,如果任何通配符,*,?,[或]出现在acclist或rejlist的元素中,它将被视为模式,而不是后缀。

如果你正在这样做,你可能想要给出你正在使用的模式的例子,你认为应该匹配什么,而事实并非如此。 你说他们是匹配的,但你确定吗?

此外,请确保将此列表放在引号中,所以在将parameter passing给wget之前,shell不会展开这些通配符。

即使您的系统没有版本1.12,请阅读本手册的“文件types”部分。 根据变更日志,维护人员添加了一些注意事项:

 * NEWS: Added documentation change re: --no-parents, and various caveats on accept/reject lists behavior. Rearranged some items in order of priority. 

你可以用-l NUMBER选项限制recursion的级别,如果有帮助的话(不遵循某个正则expression式模式)。

级别为“2”的下载index.html,其子网站/图像/等和子网站上的链接。

你如何使用wget? 尝试以这种方式使用它:

 wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/ 

这个命令会忽略gif和jpg和swf文件。

一种解决方法是通过代理服务器运行wget。 设置您的代理不允许某些模式。 这将阻止wget从一开始就下载它们。

wget将下载并删除与-R模式相匹配的文件。 它也可以匹配模式,而不仅仅是扩展名或部分文件名。 然而它并没有阻止wget先下载和删除。

httrack确实有一些不错的function,但以我的经验,它保存“文件”的方式可能有点古怪,例如,如果httrack遇到了index.asp?Type = BASIC&PAGEID = 2234234
它可以保存它,但你必须告诉它保存查询的部分
例如%h%p /%n%[TYPE:@TYPE = ::]%[PAGEID:PAGEID = ::]。%t
@是一个问号的占位符,您可以稍后重命名文件,或者可以转义问号而不是? 问题是,。%t会在您的URI的末尾添加一个“.html”,最初没有“.html”。如果你把它关掉,那么下载的图像将缺less文件扩展名。

最好使用wget恕我直言