wget拒绝仍然下载文件

Mic*_*sky 16 unix wget

我只想要文件夹结构,但我无法弄清楚如何使用wget.相反,我使用这个:

wget -R pdf,css,gif,txt,png -np -r http://example.com

哪个应该拒绝-R之后的所有文件,但在我看来wget仍然下载文件,然后删除它.

有没有更好的方法来获取文件夹结构?

发送TTP请求,等待响应... 200 OK长度:136796(134K)[application/x-download]保存到:"example.com/file.pdf"

100%[=====================================>]在0.2秒内136,796 853K/s

2012-10-03 03:51:41(853 KB/s) - "example.com/file.pdf"已保存[136796/136796]

删除example.com/file.pdf,因为它应该被拒绝.

如果有人想知道这是一个客户,他们可以告诉我结构,但这是一个麻烦,因为他们的IT人员必须这样做,所以我想自己得到它.

Sha*_*hin 24

这似乎wget是设计工作的方式.执行递归下载时,仍然会下载与拒绝列表匹配的非叶子文件,以便可以为链接收集它们,然后将其删除.

从代码内注释(recur.c):

无论是指定--delete-后,还是我们这个加载,否则拒绝(例如,通过-R)HTML文件只是这样我们就可以收获了超链接 -在这两种情况下,删除本地文件.

我们已经有一个运行在这过去的项目中,我们不得不镜像一个认证的站点,并wget保持击中注销偶数页时,它是为了拒绝那些网址.我们找不到任何改变行为的选项wget.

我们最终得到的解决方案是下载,破解和构建我们自己的版本wget.可能有一个更优雅的方法,但我们使用的快速修复是在download_child_p()例程的末尾添加以下规则(修改以符合您的要求):

  /* Extra rules */
  if (match_tail(url, ".pdf", 0)) goto out;
  if (match_tail(url, ".css", 0)) goto out;
  if (match_tail(url, ".gif", 0)) goto out;
  if (match_tail(url, ".txt", 0)) goto out;
  if (match_tail(url, ".png", 0)) goto out;
  /* --- end extra rules --- */

  /* The URL has passed all the tests.  It can be placed in the
     download queue. */
  DEBUGP (("Decided to load it.\n"));

  return 1;

 out:
  DEBUGP (("Decided NOT to load it.\n"));

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 哇!他们应该让拒绝功能像那样工作.但我确实意识到wget是为了完成一项特定的任务.谢谢. (3认同)