wget找不到网站

时间:2012-11-30 04:38:25

标签: download wget

我运行此命令从以下网站下载,添加了-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,表示执行不成功。为什么不成功?

2 个答案:

答案 0 :(得分: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尝试访问以下网址的结果:

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

所以,wget 能够找到网站,但它正在解析基本上是一个任意字符串,而网站上的脚本无法读取该字符串并用正确的值代替它有效的HTML。

编辑:看起来模板本身有一个转义错误(它在该特定行上有&amp; lt;%=而不是&lt;%=),但是其他行都没问题,解释是一样的,我想。

答案 1 :(得分:1)

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