【问题标题】:wget cannot find website [closed]wget找不到网站[关闭]
【发布时间】:2012-11-30 04:38:24
【问题描述】:

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

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,表示执行不成功。为什么不成功?

【问题讨论】:

  • 自己试过了,效果很好。您的 DNS 可能有问题?

标签: download wget


【解决方案1】:

添加到 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。

编辑:看起来模板本身存在转义错误(它在该特定行上有 <%= 而不是

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 引用并没有完全损坏。 wget 将 &lt;script type="text/html"&gt; 元素(用于 JavaScript 模板)的内容解析为实际 HTML,即使其中包含 JavaScript sn-ps。例如,原始帖子中的 URL 是由以下原因引起的:&lt;a href="&lt;%= content[i].buildUserLink %&gt;"
    • 这看起来像 ASP。奇怪的是在客户端看到它
    • 好像有人忘记添加runsat="server"
    • 我认为 ASP 标签只是模板引擎的任意设计决定。该模板稍后使用 JavaScript 呈现:BOM.Utils.templating.render('systemBuilderTpl', microTemplateParams)
    • 如果您编辑此答案,我将接受您的编辑。或者你可以提供你自己的答案,我会投赞成票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多