Html-Agility-Pack没有加载包含完整内容的页面?

时间:2013-09-23 09:25:13

标签: asp.net html-parsing web-scraping html-agility-pack scrape

我正在使用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;
    }
}

所以有人可以告诉我如何延迟

的请求
HtmlDocument page = new HtmlWeb().Load(Url);

将在page varibale

中加载完整数据

1 个答案:

答案 0 :(得分:3)

这不是延迟请求。该节点由javascript使用DOM填充,而Html Agility Pack是该要求的错误工具(它根本不是Web引擎,它只加载基本Html)。

当我需要获取需要完整Web引擎解析的内容时,我通常会使用WatiN。它旨在帮助单元测试实际网页,但这意味着它允许通过给定的浏览器引擎以编程方式访问网页,并将加载完整的文档。它带有开箱即用的IE或Firefox驱动程序,我模糊地回忆起Chrome也不难用。

相关问题