2012-01-09 96 views
3

我會用一個例子來解釋我的問題。 推薦我去的網址: http://www.google.co.il/#q=university查看網站的實際源代碼

,然後我點擊右鍵,選擇「查看源文件」,我沒有得到真正的HTML源代碼, 我敢肯定的,因爲如果我在代碼中搜索出現在文檔中的獨特詞彙我沒有得到任何結果。

我知道在鉻我可以標記的東西和檢查組件,然後我可以看到真正的源代碼,但我想用一個Java程序獲取代碼,所以我想了解爲什麼我不知道的問題當我去'查看源代碼'時看不到真正的html源代碼。

回答

1

那麼,如果您選擇「查看源代碼」,則可以在地址欄中看到頁面的實際HTML源代碼。但是,您可能想要查看的頁面是通過嵌入代碼加載外部內容並將其放入HTML中而「模糊處理」的。

如果你仍然想自動地解析這樣一個「好」的頁面,你需要運行一個完整的HTML解釋器,比如Webkit - 一個工作的地獄,原則上你在做什麼「檢查元素」。另一種方法是在頁面html中找到加載外部內容的行,然後依次加載它們。如果你幸運的話,這不會被故意混淆,而且很容易實現小任務。

但是,如果您需要整個DOM結構,你應該想想實現瀏覽器引擎之一...

2

查看源代碼通常不顯示任何JavaScript生成的內容,看到的是你要使用插件,例如螢火蟲。

0

你搜索了哪個單詞?

我猜查看源代碼會顯示完整的HTML代碼,即使是頁面上不可見的部分。 嘗試修剪搜索字符串後再次搜索。並在chrome中搜索相同的字符串,你之前嘗試過的。

另外,在onload事件完成後,如果JS發生更改HTML,它將不會更新。

0

您正在查找的文本可能是由JavaScript呈現的。如果您使用Chrome(既然你提到它),當你做「檢查元素」,來了Web開發人員面板上有「資源」選項卡中列出JavaScript文件,樣式表等

0

「查看源文件」爲您提供服務器生成的純粹響應。正如Joachim Isaksson已經提到的那樣 - 使用Chrome或Firebug for Firefox。

2

我知道看在Java中的實際來源,包括由修改是通過虛擬瀏覽器框架,像HtmlUnit JavaScript中的唯一途徑。

HtmlUnit可以執行JS腳本並將所有更改應用到DOM樹。你將不得不序列化它來獲得實際的頁面。請記住,沒有「完整的html源碼」這樣的東西。您只能獲取DOM樹並可能將其序列化。

0

在你給的例子頁面,通過從一個JS腳本函數生成的每個結果元素加載的文件;此外,它不會使用純字符而是使用Unicode來呈現文本。