2014-09-18 50 views
2

我想以編程方式解析網站的頁面,顯然我需要完整的HTML代碼。但是,站點只能通過直接URL加載一些主頁面,一旦加載主頁面,它就會通過AJAX接收其內容。如何獲取完全加載的HTML頁面代碼

我怎樣才能加載一個頁面「像在瀏覽器」,讓它完全加載所有的腳本,他們的工作完成?例如,如果我使用WebBrowser類真正打開一個頁面,就像在瀏覽器中一樣,它的DocumentText屬性(它應該代表DOM內容)只返回初始頁面,而沒有通過AJAX加載實際內容或類似的內容google.com)。這也發生在瀏覽器中,並看到我需要使用開發人員工具的實際HTML。

更新:答案被發現是在這裏,這要歸功於弗拉基米爾Shmidt how to dynamically generate HTML code using .NET's WebBrowser or mshtml.HTMLDocument?

DocumentText「根」 DOM加載後沒有更新其內容,但文檔屬性確實。

回答

0

您是否聽說過http://webkitdotnet.sourceforge.net/? 而且.NET具有可以「在瀏覽器中,如」用於

+0

是的,它已經,我只是你的評論後,更新了我的問題,請調查一下。 – yaapelsinko 2014-09-18 17:24:10

+0

當WebBrowser中的DocumentCompleted(WebBrowserDocumentCompletedEventHandler)事件足以滿足所有站點通過ajax加載的時候? – 2014-09-18 17:27:15

+0

哈姆,我會去看看它...... – yaapelsinko 2014-09-18 17:30:21

0

我怎麼會加載一個網頁WebBrowser組件...?

這樣做的唯一可行的方法是實際上在瀏覽器中加載頁面。這可以通過使用像Selenium/WebDriver這樣的工具來實現自動化。

+0

那麼有WebBrowser類在瀏覽器中打開它,我已經更新了我的問題。仍然沒有看到「優雅」的解決方案... – yaapelsinko 2014-09-18 17:28:03

0

從標題看來,在AJAX和javascript檢索或生成內容之後,您似乎希望在頁面中完成HTML。如果是這種情況,瀏覽器調試器(F12)會有這種情況。在Chrome中,查看「元素」標籤下的內容。

+0

是的,但我需要以編程方式加載來解析它。有沒有機會從WebBrowser實例接收完整的代碼? – yaapelsinko 2014-09-18 17:29:39

0

這裏有幾個解決方案。

主邏輯:

  1. 請求該頁
  2. 等待直到文檔完全加載(readyState的=完成)
  3. 獲取文檔內容

我想一個簡單的人是使用WebControl來導航到您的url並等待控件就緒或完成狀態。 之後,你可以開始解析。

這裏的SO是一個解決方案:htmlagilitypack and dynamic content issue

相關問題