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将在变量中加载完整数据

4

1 回答 1

3

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

当我需要处理需要完整的网络引擎来解析的东西时,我通常使用WatiN。它旨在帮助对实际网页进行单元测试,但这意味着它允许通过给定的浏览器引擎以编程方式访问网页并加载完整的文档。它带有开箱即用的 IE 或 Firefox 驱动程序,我隐约记得 Chrome 也不难使用。

于 2013-09-24T15:29:49.130 回答