使用wget下载时会忽略“其他”域吗?


13

我想抓取www.website.com/XYZ下的链接,而仅下载www.website.com/ABC下的链接。

我正在使用以下wget命令来获取所需的文件:

wget  -I ABC -r -e robots=off --wait 0.25  http://www.website.com/XYZ

当我使用wget 1.13.4时,这完美地工作。但是问题是我必须在具有wget 1.11的服务器上使用此命令,并且当我使用同一命令时,它最终会下载其他域,例如:

www.website.de 
www.website.it 
...

如何避免这个问题?我尝试使用

--exclude domains=www.website.de,www.website.it

但是它一直在下载这些域。

还要注意,我无法使用,--no-parent因为我想要的文件位于较高级别(我希望通过抓取website.com/XYZ下的链接来获取website.com/ABC下的文件)。

有什么提示吗?


不要使用“假” URL,也不要使用与您的问题无关的网站的URL。您列出的域绝不是“子域”,它们只是不同的域,可能属于同一公司。
贡伯特

这里不对劲。 wget默认情况下不应跨主机,并且在执行递归wget时需要-H/ --span-hosts选项跨主机。“ www.website.com”是与“ www.website.de”完全不同的主机。
jw013

@guntbert抱歉,我认为提供真实的URL将是一个问题。当然,我要爬网的网站不是website.com。但是,当我搜寻example.com时,也会在主目录中看到example.it,example.de(与example.com处于同一级别)。
user2779485

@ jw013就像我上面说的,当我只提供www.example.com/x时,它也会同时爬行www.example.de,www.example.it。但是这只会发生在wget 1.11而不是1.13 ..这就是为什么我很困惑的原因。
user2779485

这看起来像个错误:wget 1.11的行为不应有所不同,-H一直需要在原始主机之外递归。有-D www.website.com帮助吗?
吉尔(Gilles)'所以

Answers:


5

这是错误的:

--exclude domains=www.website.de,www.website.it

正确的方法是:

--exclude-domains www.website.de,www.website.it

在wget手册页中:

--exclude-domains domain-list
      Specify the domains that are not to be followed.

列表不能以逗号分隔吗?
rubo77

@ rubo77你是对的,我已经改变了。
Daniel Werner 2015年

18

您可以尝试--max-redirect 0或使用--domains example.com 与相对的方法--exclude-domains example.com

看到:

  -D,  --domains=LIST              comma-separated list of accepted domains.
       --exclude-domains=LIST      comma-separated list of rejected domains.
       --follow-tags=LIST          comma-separated list of followed HTML tags.
       --ignore-tags=LIST          comma-separated list of ignored HTML tags.
  -np, --no-parent                 don't ascend to the parent directory.
  --max-redirect                   maximum redirections allowed per page.

5
如果您希望将域名列入白名单而不是黑名单,则这比公认的答案更好
yunzen 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.