2012-11-30 108 views
0

我跑這個命令從以下網站下載,添加有-p-k選項(參見here其描述。)的wget無法找到網站

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

只是自己試了一下,它工作得很好。也許你的DNS有問題? –

回答

2

您正在提取默認文檔(index.html或其等價物取決於Web服務器)以及所有引用的資產('IMG'和'SCRIPT'元素的'A'元素,src屬性和'LINK'元素)。 其中一個引用被破壞(oops),因此是404。在這種情況下,它看起來像一些JavaScript,在瀏覽器中可以很好,但對於wget(沒有JavaScript引擎),它被解釋爲指向不存在的引用的URL。

+0

參考文件沒有完全打破。 wget將一個'

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。

編輯:它看起來像模板本身(它有& lt;%=而不是<%=)在該特定行上有一個轉義錯誤,但其他行很好,並且解釋是相同的,我認爲。

+0

很好研究! +1 –

相關問題