Html-Agility-Pack无法加载完整内容的页面?

3
我正在使用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变量中

1个回答

3

这不是关于延迟请求的问题。该节点由JavaScript使用DOM填充,而Html Agility Pack不是满足该要求的正确工具(它根本不是Web引擎,只加载基本的HTML)。

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


适用于Internet Explorer 6、7、8、9和FireFox 2和3。 - Jacob Proffitt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接