HTMLAgilityPack加載AJAX內容以進行抓取

ajax asp.net c# html-agility-pack winforms

我試圖在ac#webforms項目中使用HTMLAgilityPack抓取一個網頁。

我見過的所有解決方案都使用WebBrowser控件。但是,根據我的判斷,這僅適用於WinForms項目。

目前我通過以下代碼調用所需的頁面:

var getHtmlWeb = new HtmlWeb();
var document = getHtmlWeb.Load(inputUri);
HtmlAgilityPack.HtmlNodeCollection nodes = document.DocumentNode.SelectNodes("//div[@class=\"nav\"]");

我見過使用WebBrowser控件的一段代碼示例:

if (this.webBrowser1.Document.GetElementsByTagName("html")[0] != null)
_htmlAgilityPackDocument.LoadHtml(this.webBrowser1.Document.GetElementsByTagName("html")[0].OuterHtml);

關於如何在加載AJAX後抓取頁面的任何建議/指示將不勝感激。

一般承認的答案

似乎使用HTMLAgilityPack只能抓取通過html本身加載的內容。因此,通過AJAX加載的任何內容都不會被HTMLAgilityPack看到。

也許最簡單的選擇 - 可行 - 是使用基於瀏覽器的工具(如Firebug)來確定AJAX加載的數據源。然後直接操作源數據。這樣做的另一個好處可能是刮掉更大的數據集。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow