通过http获取目录列表

时间:2010-12-21 04:04:40

标签: http version wget directory-listing

我正在通过网络提供一个目录,我有兴趣监控它。它的内容是我正在使用的各种版本的软件,我想编写一个我可以运行的脚本来检查那里的内容,并下载任何比我已经获得的更新的内容。

有没有办法,比如用wget或其他东西来获取目录列表。我已经尝试在目录上使用wget,这给了我html。为了避免解析html文档,有没有办法检索像ls这样的简单列表?

6 个答案:

答案 0 :(得分:22)

我刚刚想出办法:

$ wget --spider -r --no-parent http://some.served.dir.ca/

它非常冗长,所以你需要根据你所追求的内容多次管道grep,但信息就在那里。看起来它打印到stderr,所以追加2>&1grep放在它上面。我贪图“\ .tar \ .gz”找到该网站提供的所有tar包。

请注意wget将临时文件写入工作目录,并且不会清除其临时目录。如果这是一个问题,您可以更改为临时目录:

$ (cd /tmp && wget --spider -r --no-parent http://some.served.dir.ca/)

答案 1 :(得分:2)

以下不是递归的,但它对我有用:

$ curl -s https://www.kernel.org/pub/software/scm/git/

输出为HTML并写入stdout。与wget不同,没有任何内容写入磁盘。

管道输出时,

-s--silent)是相关的,特别是在一个不能产生噪音的脚本中。

请尽可能记住不要使用ftphttp代替https

答案 2 :(得分:1)

如果它由http提供,则无法获得简单的目录列表。您在浏览时看到的列表(wget正在检索的列表)由Web服务器生成为HTML页面。您所能做的就是解析该页面并提取信息。

答案 3 :(得分:1)

您要求使用FTP而不是HTTP提供最佳服务。

HTTP没有目录列表的概念,FTP确实如此。

大多数HTTP服务器不允许访问目录列表,而那些正在执行此操作的是服务器的功能,而不是HTTP协议。对于那些HTTP服务器,他们决定为人力消费生成并发送HTML页面,而不是机器消费。你无法控制它,除了解析HTML之外别无选择。

FTP专为机器消耗而设计,更多是通过引入替换模糊MLST命令的MLSDLIST命令而设计的。

答案 4 :(得分:0)

AFAIK,出于安全考虑,无法获得类似的目录列表。您的目标目录具有HTML列表是相当幸运的,因为它允许您解析它并发现新的下载。

答案 5 :(得分:0)

您可以使用IDM(互联网下载管理器)
它有一个名为“ IDM SITE GRABBER”的实用程序,输入了http/https URL,它将为您下载http/https协议中的所有文件和文件夹。