我运行此命令从以下网站下载,添加了-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,表示执行不成功。为什么不成功?
答案 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/<%=  content[i].buildUserPic %>" />
所以,wget 能够找到网站,但它正在解析基本上是一个任意字符串,而网站上的脚本无法读取该字符串并用正确的值代替它有效的HTML。
编辑:看起来模板本身有一个转义错误(它在该特定行上有&amp; lt;%=而不是&lt;%=),但是其他行都没问题,解释是一样的,我想。
答案 1 :(得分:1)
您正在获取默认文档(index.html或其等效项,具体取决于Web服务器)以及所有引用的资源('A'元素,'IMG'和'SCRIPT'元素的src属性和'LINK'元素)在那份文件中。 其中一个引用是破坏的(oops),因此是404.在这种情况下,它看起来像浏览器中的一些JavaScript可以很好但是对于wget(没有JavaScript引擎)它被解释为URL它指向不存在的引用。