【问题标题】:recursive wget with hotlinked requisites具有热链接要求的递归 wget
【发布时间】:2012-10-17 12:40:16
【问题描述】:

我经常使用 wget 来镜像非常大的网站。包含热链接内容(无论是图像、视频、css、js)的网站会造成问题,因为我似乎无法指定我希望 wget 抓取其他主机上的页面必需品,而无需爬网也遵循指向其他主机的超链接主机。

例如,让我们看看这个页面 https://dl.dropbox.com/u/11471672/wget-all-the-things.html

让我们假设这是一个我想完全镜像的大型网站,包括所有页面必需品——包括那些热链接的。

wget -e robots=off -r -l inf -pk 

^^ 获取除热链接图像之外的所有内容

wget -e robots=off -r -l inf -pk -H

^^ 获取所有内容,包括热链接图像,但失控,继续下载整个网络

wget -e robots=off -r -l inf -pk -H --ignore-tags=a

^^ 获取第一页,包括热链接和本地图像,不跟随超链接到范围之外的站点,但显然也不跟随超链接到站点的下一页。

我知道还有其他各种工具和方法可以实现这一点(HTTrack 和 Heritrix 允许用户区分其他主机上的热链接内容与指向其他主机的超链接),但我想看看这是否是可以使用 wget。 理想情况下这不会在后处理中完成,因为我希望将外部内容、请求和标头包含在我输出的 WARC 文件中。

【问题讨论】:

    标签: wget


    【解决方案1】:

    您不能只为页面请求指定跨主机; -H 是全有或全无。由于 -r 和 -H 将拉下整个 Internet,因此您需要拆分使用它们的爬网。要获取热链接的页面请求,您必须运行 wget 两次:一次递归通过站点的结构,一次获取热链接的请求。我用这种方法很幸运:

    1) wget -r -l inf [other non-H non-p switches] http://www.example.com

    2) 构建站点结构 (find . | grep html) 中所有 HTML 文件的列表并通过管道传输到文件

    3)wget -pH [other non-r switches] -i [infile]

    第 1 步在您的本地计算机上构建站点的结构,并为您提供其中的任何 HTML 页面。第 2 步为您提供页面列表,第 3 步获取这些页面上使用的所有资产。这将在您的本地计算机上构建一个完整的镜像,只要热链接的资产仍然存在。

    【讨论】:

      【解决方案2】:

      我已经设法通过使用正则表达式来做到这一点。像这样镜像http://www.example.com/docs

      wget --mirror --convert-links --adjust-extension \
      --page-requisites --span-hosts \
      --accept-regex '^http://www\.example\.com/docs|\.(js|css|png|jpeg|jpg|svg)$' \
      http://www.example.com/docs
      

      您可能需要为每个特定站点调整正则表达式。例如,一些网站喜欢在 css 文件上使用参数(例如 style.css?key=value),本示例将排除这些参数。

      您要包含的来自其他主机的文件可能至少包含

      • 图片:png jpg jpeg gif
      • 字体:ttf otf woff woff2 eot
      • 其他:js css svg

      有人认识其他人吗?

      所以你想要的实际正则表达式可能看起来更像这样(作为一个没有换行符的字符串):

      ^http://www\.example\.org/docs|\.([Jj][Ss]|[Cc][Ss][Ss]|[Pp][Nn][Gg]|[Jj]
      [Pp][Ee]?[Gg]|[Ss][Vv][Gg]|[Gg][Ii][Ff]|[Tt][Tt][Ff]|[Oo][Tt][Ff]|[Ww]
      [Oo][Ff][Ff]2?|[Ee][Oo][Tt])(\?.*)?$
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-18
        • 1970-01-01
        • 1970-01-01
        • 2015-05-05
        • 1970-01-01
        • 2012-12-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多