Html-Agility-Pack沒有加載包含完整內容的頁面?

asp.net html-agility-pack html-parsing scrape web-scraping

我正在使用Html Agility Pack從網站獲取數據(報廢)

我的問題是從我提取數據的網站加載一些頁面加載幾秒後的內容。

所以每當我試圖從特定的Div中讀取特定數據時,它就會給我null。

但在var page我只是沒有得到分區reviewBox ..因為它尚未加載。

public void FetchAllLinks(String Url)
{
    Url = "http://www.tripadvisor.com/";
    HtmlDocument page = new HtmlWeb().Load(Url);

    var link_list= page.DocumentNode.SelectNodes("//div[@class='reviewBox']");

    foreach (var link in link_list)
    {
        htmlpage.InnerHtml = link.InnerHtml;
    }
}

那麼有人可以告訴我如何延遲這個請求

public void FetchAllLinks(String Url)
{
    Url = "http://www.tripadvisor.com/";
    HtmlDocument page = new HtmlWeb().Load(Url);

    var link_list= page.DocumentNode.SelectNodes("//div[@class='reviewBox']");

    foreach (var link in link_list)
    {
        htmlpage.InnerHtml = link.InnerHtml;
    }
}

將在page varibale中加載完整數據

熱門答案

這不是延遲請求。該節點由javascript使用DOM填充,而Html Agility Pack是該要求的錯誤工具(它根本不是Web引擎,它只加載基本Html)。

當我需要獲得需要完整Web引擎解析的東西時,我通常使用WatiN 。它旨在幫助單元測試實際網頁,但這意味著它允許通過給定的瀏覽器引擎以編程方式訪問網頁,並將加載完整的文檔。它帶有開箱即用的IE或Firefox驅動程序,我模糊地回憶起Chrome也不難用。




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