Download Wget span host仅适用于图像/样式表/javascript,不适用于链接

Download Wget span host仅适用于图像/样式表/javascript,不适用于链接,download,wget,Download,Wget,Wget具有-H“span host”选项 我想做一个递归下载(比如,第3级),我想得到图像、样式表、Java脚本等(也就是说,正确显示页面所需的文件),即使它们在我的主机之外。但是,我不想跟踪到另一个HTML页面的链接(因为这样它就可以转到另一个HTML页面,依此类推,然后数字就会爆炸。) 有可能以某种方式做到这一点吗?似乎-H选项可以控制图像/样式表/javascript案例和链接案例跨到其他主机,wget不允许我将两者分开。要下载所有“正确显示页面所需的文件”,可以使用-p或--页面必备条

Wget具有
-H
“span host”选项

我想做一个递归下载(比如,第3级),我想得到图像、样式表、Java脚本等(也就是说,正确显示页面所需的文件),即使它们在我的主机之外。但是,我不想跟踪到另一个HTML页面的链接(因为这样它就可以转到另一个HTML页面,依此类推,然后数字就会爆炸。)


有可能以某种方式做到这一点吗?似乎
-H
选项可以控制图像/样式表/javascript案例和链接案例跨到其他主机,wget不允许我将两者分开。

要下载所有“正确显示页面所需的文件”,可以使用
-p
--页面必备条件
,可能与
-Q
-quota

一起下载页面中的所有依赖项

第一步是下载特定页面的所有资源。如果您查看,您会发现:

…下载单个页面及其所有必要条件(即使它们存在于 单独的网站),并确保该地块在本地正确显示,除了-p之外,作者还喜欢使用一些选项:

限制域

为了帮助确定哪些域需要被包括/排除,您可以使用grep来grep一两页(您需要grep
.orig
文件)并列出其中的链接。在此基础上,您可以构建一个适当的应包含域列表,并使用
-D
参数对其进行限制。或者,您至少可以找到一些不希望包含的域,并使用
--exclude domains
对其进行限制。最后,您可以使用
-Q
参数来限制下载的数据量,以防止磁盘被填满

参数说明

  • -E
    • 如果下载了类型为application/xhtml+xml或text/html的文件,且URL未以regexp
      \.[Hh][Tt][Mm][Ll]?,
      此 选项将导致后缀.html附加到本地文件名
  • -H
    • 在执行递归检索时启用跨主机的跨越
  • -k
    • 下载完成后,转换文档中的链接,使其适合本地查看。这不仅影响到 可见的超链接,但文档中链接到外部内容的任何部分,如嵌入的图像、样式表的链接, 指向非HTML内容的超链接等
  • -K
    • 转换文件时,请使用.orig后缀备份原始版本
  • -p
    • 此选项使Wget下载正确显示给定HTML页面所需的所有文件。这包括 内联图像、声音和引用的样式表
  • -np
    • 递归检索时,永远不要上升到父目录。这是一个有用的选项,因为它保证只有 下面将下载特定层次结构
  • -l
    • 指定递归最大深度级别深度
  • -D
    • 设置要遵循的域。域列表是以逗号分隔的域列表。请注意,它不会打开-H
  • --排除域
    • 指定不遵循的域
  • -Q
    • 指定自动检索的下载配额。该值可以以字节(默认)、千字节(带k后缀)或兆字节(带m后缀)为单位指定

只需将
wget-E-H-k-k-p-r http://
放入下载完整的站点即可。如果在下载的时候你打开了一些页面,但是它的资源不可用,不要紧张,因为当wget完成所有的工作时,它会转换它们

在域的单个层中,您可以使用以下命令在内部和第三方服务器上检查所有链接

wget --spider -nd -e robots=off -Hprb --level=1 -o wget-log -nv http://localhost
这里的限制是它只检查单个层。这在CMS中运行良好,在CMS中,您可以使用GET变量而不是CMS生成的URL展平站点。否则,您可以使用您喜爱的服务器端脚本在目录中循环此命令。有关所有选项的完整解释,请查看此Github提交

尝试使用wget
--accept regex
标志;posix
--regex类型
被编译成wget标准,但如果需要更详细的内容,可以在perl regex引擎中编译:

例如,以下内容将获取外部站点上的所有PNG,深度为一级,以及url中包含google字样的任何其他页面:
wget-r-H-k-l1——正则表达式类型posix——接受正则表达式“(*google.*png)”http://www.google.com“


它实际上并不能解决在外部站点上降低多个级别的问题,因为您可能需要编写自己的spider。但是,使用
--accept regex
在大多数情况下,您可能会接近您要查找的内容。

您能举一个
-E
选项有用的例子吗?如果您正在下载URL:
example.com/products
,它将非常有用。如果您试图打开生成的
产品
文件,您的操作系统将不知道如何处理它。但是,如果使用
-E
,则会将
.html
附加到文件中,从而生成
products.html
,您的操作系统将知道如何处理该文件。但是为什么有人会在应该命名为
products.html
时命名文件
products
?@AngelTsankov:
-E
有帮助。@SJU为什么URI是
https://sta
wget -E -H -k -K -p http://<site>/<document>
wget -E -H -k -K -p -np -l 1 http://<site>/level
wget --spider -nd -e robots=off -Hprb --level=1 -o wget-log -nv http://localhost