我只想要文件夹结构,但我无法弄清楚如何使用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%[=====================================>] 136,796 853K / s在0.2秒
2012-10-03 03:51:41(853 KB / s) - “example.com/file.pdf” 保存[136796/136796]
卸下 example.com/file.pdf因为它应该被拒绝。
如果有人想知道这是针对一个客户,他们可以告诉我结构,但这是一个麻烦,因为他们的IT人员必须这样做,所以我想自己得到它。
答案 0 :(得分:21)
这似乎是wget
设计工作的方式。执行递归下载时,仍会下载与拒绝列表匹配的非叶子文件,以便可以为链接收集这些文件,然后将其删除。
来自代码内注释(recur.c):
指定了--delete-after,或我们加载了它 否则拒绝(例如通过-R)HTML文件就这样我们 可以收获其超链接 - 在任何一种情况下,删除 本地文件。
我们在过去的项目中遇到过这种情况,我们必须镜像一个经过身份验证的网站,wget
一直在点击注销页面,即使它意图拒绝那些网址。我们找不到任何更改wget
行为的选项。
我们最终得到的解决方案是download,破解并构建我们自己的wget
版本。可能有一种更优雅的方法,但我们使用的快速修复方法是将以下规则添加到download_child_p()
routine的末尾(根据您的要求进行修改):
/* 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;
}