2012-07-09 32 views
10

運行腳本我試圖刮掉其工作原理如下特定的網頁。在HtmlAgilityPack

首先在頁面加載,然後它運行某種JavaScript來獲取它需要填充頁面的數據。我對這些數據很感興趣。

如果我得到HtmlAgilityPack的頁面 - 腳本不運行,所以我得到什麼本質上大多是空白頁。

有沒有辦法迫使它運行腳本,這樣我就可以獲取數據?

+0

看看http://phantomjs.org/ – 2017-03-30 09:56:11

回答

9

你得到什麼服務器返回 - 同一個網頁瀏覽器。當然,Web瀏覽器會運行這些腳本。 HTML敏捷性包只是一個HTML解析器 - 它沒有辦法解釋JavaScript,或者它綁定到文檔的內部表示。如果你想運行腳本,你需要一個網頁瀏覽器。您的問題的完美答案將是一個完整的「無頭」Web瀏覽器。這是一個包含HTML解析器,JavaScript解釋器和模擬瀏覽器DOM的模型的東西,它們一起工作。基本上,這是一個網頁瀏覽器,除了沒有渲染部分。目前還沒有完全在.NET環境中工作的東西。

最好的辦法是使用WebBrowser控制和實際加載和計劃控制下運行在Internet Explorer中的頁面。這不會很快或很漂亮,但它會做你需要做的。

也看到我的回答類似的問題:Load a DOM and Execute javascript, server side, with .Net其中討論了可用的技術在.NET中做到這一點。大多數作品現在存在,但不幸的是,還沒有完成,或者沒有以正確的方式進行整合。

+0

的GDI +手柄/造成WebBrowser控件是什麼推動我尋求替代內存泄漏。我只是很抱歉,沒有適當的解決方案來解決這個問題。 – Aabela 2012-07-09 13:24:02

+0

無賴。是的,這是那些還沒有完成的地方之一,至少如果你把它放在.NET中。如果你可以和混合應用程序一起生活,肯定有辦法做到這一點,但它會更復雜。我一直希望有人會完全用.NET來創建真正的統一無頭瀏覽器。但這絕對不是一件小事。就像我說的那樣,很多東西都在那裏,但有人需要把它們放在一起。 – 2012-07-09 13:26:26

3

您可以使用Awesomium爲此,http://www.awesomium.com/。它工作得很好,但不支持x64,也不是線程安全的。我用它來瀏覽一些網站全天候,它的運行良好,至少一對夫婦連續幾天,但隨後通常會崩潰。