在HtmlAgilityPack中運行腳本

c# html-agility-pack javascript

我正在嘗試抓取一個如下工作的特定網頁。

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

如果我使用HtmlAgilityPack獲取頁面 - 腳本沒有運行,所以我得到它本質上是一個空白頁面。

有沒有辦法強制它運行腳本,所以我可以獲取數據?

一般承認的答案

您將獲得服務器返回的內容 - 與Web瀏覽器相同。當然,Web瀏覽器會運行腳本。 Html Agility Pack只是一個HTML解析器 - 它無法解釋javascript或將其綁定到文檔的內部表示。如果您想運行該腳本,則需要Web瀏覽器。對您的問題的完美答案將是一個完整的“無頭”Web瀏覽器。這是一個包含HTML解析器,javascript解釋器和模擬瀏覽器DOM的模型的東西,它們一起工作。基本上,這是一個Web瀏覽器,除了沒有渲染部分。目前還沒有完全在.NET環境中運行的東西。

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

另請參閱我對類似問題的回答: 加載DOM並執行javascript,服務器端,與.Net討論.NET中可用的技術來執行此操作。大多數作品現在都存在,但不幸的是,它們還沒有完全存在或者沒有以正確的方式集成。


熱門答案

您可以使用Awesomium, http: //www.awesomium.com/。它運行得相當好,但不支持x64,並且不是線程安全的。我用它來掃描一些網站24x7並且它連續運行至少幾天然後它通常會崩潰。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因