如何使用wget下载所有与模式匹配的URL

时间:2019-04-17 20:14:48

标签: wget

说我有一个像这样的网站:

https://mywebsite.com/dir1/id-1
https://mywebsite.com/dir1/id-2
https://mywebsite.com/dir1/id-3
https://mywebsite.com/dir2/foo-id-1
https://mywebsite.com/dir2/foo-id-2
https://mywebsite.com/dir2/foo-id-3
https://mywebsite.com/dir3/list-1
https://mywebsite.com/dir3/list-2
https://mywebsite.com/dir3/list-...
https://mywebsite.com/dir3/list-n
https://mywebsite.com/dir4/another-list-type-1
https://mywebsite.com/dir4/another-list-type-2
https://mywebsite.com/dir4/another-list-type-...
https://mywebsite.com/dir4/another-list-type-n
https://mywebsite.com/random-other-directories-i-dont-care-about...

我想下载所有的/dir1/:id/dir2/foo-:id页面,但是想通过/dir1跟随/dir4中所有页面的链接,其中一些例如,这些目录仅是指向/dir/:id的链接的列表。

想知道我该怎么做。理想情况下,它将最大化首先下载所有:id链接,而不会因为首先下载成千上万的列表页面而陷入困境。

想知道怎么做。它不仅仅是一个简单的“镜像站点”。很多时候,当我尝试过这种方法时,wget会过度沉迷于我不在乎的链接中。我希望它最大程度地下载/dir1/:id/dir2/foo-:id,同时还收集它在其他页面上找到的所有链接。基本上,有一种确定优先级的方法。

1 个答案:

答案 0 :(得分:1)

因此,您既不需要广度优先也不是深度优先的方法,而是想要一种使用优先级概念的方法。

不幸的是,仅使用Wget不可能做到这一点。但是,使用一些bash脚本,您也许可以非常接近。我可以想到两种简单的方法:

  1. 给定首先获取到/dir1//dir2/的链接,然后递归下载该链接。完成后,请用mywebsite.com/调用wget以便下载其余文件。发送HEAD对您已经下载的所有文件的请求将浪费几秒钟,仅此而已。

  2. 这类似于上面的(1)。除此以外,您对每个目录都使用“ --accept-regex”调用wget,导致它们一个接一个地下载