递归下载如何在wget中工作?

时间:2016-03-29 19:01:40

标签: wget utility

wget用于镜像站点,但我想知道该实用程序如何下载域的所有URL。

wget -r www.xyz.com

wget如何下载域xyz的所有网址?它是否访问索引页并解析它并像抓取器一样提取链接?

2 个答案:

答案 0 :(得分:1)

简短回答:通常,是的,Wget会抓取所有网址,但有一些例外:

  • robots.txt
  • 阻止的网址
  • 网站包含的URL比默认抓取深度
  • 更深
  • 使用较旧版本的Wget,可能无法检索某些CSS情况下的所有文件

至于起点,Wget只是从您提供的任何URL开始,在本例中为if (fprintf(ostream, ...) < 0) Handle_Error(); 。由于大多数Web服务器软件在没有指定页面时都会返回索引页面,因此Wget会收到索引页面。

详细

www.xyz.com人:

  

Wget可以关注HTML,XHTML和CSS页面中的链接......这有时被称为“递归下载”。

但补充道:

  

在这样做时,Wget尊重Robot Exclusion Standard(/robots.txt)。

因此,如果GNU Wget 1.17.1指定不对/robots.txt进行索引,则默认情况下会将其排除,与尊重/some/secret/page.htm的任何其他抓取工具相同。

此外,还存在默认的深度限制:

  

-r

     

- 递归

     

启用递归检索。默认最大深度为5。

因此,如果由于某种原因发生了超过5的链接,为了满足您最初捕获robots.txt的愿望,您可能需要使用all URLs选项,例如-l来深入六:

  

-l depth

     

- 级别=深度

     

指定递归最大深度级别深度。

另请注意,早期版本的Wget在CSS中找到的资产出现了问题,而这些资产又由-l 6链接,如wget downloads CSS @import, but ignores files referenced within them中所述。但是他们没有说出他们使用的版本,我还没有测试最新版本。我当时的解决方法是手动找出丢失的资产,并专门为那些丢失的资产编写一个单独的Wget命令。

答案 1 :(得分:0)

是。我发现wget的作用是 - 它解析给定的URL,然后通过所有嵌入的链接递归下载。