0

我运行此命令从以下网站下载,并添加了-p-k选项(有关它们的描述,请参见此处。)

wget -pk http://www.tomshardware.com/

它返回的是

...
--2012-11-29 23:32:42--  http://www.tomshardware.com/%3C%25=%20content[i].buildUserPic%20%25%3E
Reusing existing connection to www.tomshardware.com:80.
HTTP request sent, awaiting response... 404 Not Found
2012-11-29 23:32:43 ERROR 404: Not Found.

并且退出状态为8,表示执行不成功。为什么不成功?

4

2 回答 2

2

添加到 Jason Sperske 的回答中:既然您告诉 wget 使用 下载页面资源,它就会被页面使用的元素-p弄糊涂。<script type="text/html">一些 JavaScript 模板引擎使用这种类型的脚本标记。内容不是有效的 HTML(因为它需要首先由模板引擎解析),但 wget 正在尝试解析它并遵循它所看到的 URL。

该链接http://www.tomshardware.com/%3C%25=%20content[i].buildUserPic%20%25%3E是 wget 尝试从以下位置访问 URL 的结果:

<img class="buildUserPic" src="http://www.tomshardware.com/&lt;%=&#32 content[i].buildUserPic&#32;%&gt;" />

因此,wget能够找到该网站,但它解析的内容基本上是一个任意字符串,而网站上的脚本无法读取该字符串并替换为正确的值以使其成为有效的 HTML。

编辑:看起来模板本身存在转义错误(它在该特定行上有 <%= 而不是 <%=),但其他行很好,我认为解释是相同的。

于 2012-11-30T05:25:13.207 回答
1

您正在获取其中的默认文档(index.html 或其等效文件,具体取决于 Web 服务器)以及所有引用的资产(“A”元素、“IMG”和“SCRIPT”元素的 src 属性以及“LINK”元素)文档。其中一个引用已损坏(哎呀),因此出现 404。在这种情况下,它看起来像一些 JavaScript,在浏览器中会很好,但对于 wget(它没有 JavaScript 引擎),它被解释为 URL它指向一个不存在的引用。

于 2012-11-30T04:42:05.827 回答