我正在使用 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 中加载完整数据
这不是延迟请求。该节点由使用 DOM 的 javascript 填充,而 Html Agility Pack 是满足该要求的错误工具(它根本不是 Web 引擎,它仅加载基本 Html)。
当我需要获取需要完整 Web 引擎来解析的内容时,我通常使用 WatiN。它旨在帮助对实际网页进行单元测试,但这意味着它允许通过给定的浏览器引擎以编程方式访问网页,并将加载完整的文档。它附带了开箱即用的 IE 或 Firefox 驱动程序,我依稀记得 Chrome 也不难使用。