【问题标题】:How does recursive download work in wget?wget中的递归下载是如何工作的?
【发布时间】:2016-03-29 19:01:40
【问题描述】:

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

wget -r www.xyz.com

wget如何下载域xyz的所有URL?它会访问索引页面并解析它并像爬虫一样提取链接吗?

【问题讨论】:

    标签: wget utility


    【解决方案1】:

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

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

    至于起点,Wget 只是从您给它的任何 URL 开始,在本例中为 www.xyz.com。由于大多数web服务器软件在没有指定页面的情况下都会返回索引页面,所以Wget接收到的索引页面开始。

    详情

    GNU Wget 1.17.1 的人:

    Wget 可以跟随 HTML、XHTML 和 CSS 页面中的链接……这有时被称为“递归下载”。

    但补充:

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

    所以如果/robots.txt 指定不索引/some/secret/page.htm 当然这将被默认排除,与任何其他尊重robots.txt 的爬虫相同。

    另外,还有一个默认的深度限制:

    -r

    --递归

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

    因此,如果由于某种原因碰巧有超过 5 个深度的链接,为了满足您最初捕获 all URLs 的愿望,您可能需要使用 -l 选项,例如 -l 6 去 6 个深度:

    -l 深度

    --level=深度

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        • 2020-11-07
        相关资源
        最近更新 更多