欢迎光临
我们一直在努力

C# .net 用HtmlAgilityPack实现数据抓取(采集)可抓ajax异步填充的数据

一、HtmlAgilityPack安装

可通过NuGet安装

Install-Package HtmlAgilityPack

二、获取页面数据,包括ajax异步加载的数据

//当前页面有一个div id=“uiDynamicText” 里面的内容是通过timeout延迟1秒种写进去的。也自己写过例子内容是通过ajax写入。
            string url = "http://html-agility-pack.net/from-browser";

            //创建htmlweb
            var web1 = new HtmlWeb();
            var doc1 = web1.LoadFromBrowser(url, o =>
            {
                var webBrowser = (WebBrowser)o;

                //下面代码意思是:等待,当id=uiDynamicText的元素,查看InnerText中的内容,等待直到不为空时结束
                return !string.IsNullOrEmpty(webBrowser.Document.GetElementById("uiDynamicText").InnerText);
            });
            //获取id='uiDynamicText'元素中的值
            var t1 = doc1.DocumentNode.SelectSingleNode("//div[@id='uiDynamicText']").InnerText;

            var web2 = new HtmlWeb();
            var doc2 = web2.LoadFromBrowser(url, html =>
            {
                //当网页中不存在此字符串时结束
                return !html.Contains("<div id=\"uiDynamicText\"></div>");
            });
            var t2 = doc2.DocumentNode.SelectSingleNode("//div[@id='uiDynamicText']").InnerText;

            Console.WriteLine("Text 1: " + t1);
            Console.WriteLine("Text 2: " + t2);
赞(0)
未经允许不得转载:自游互动 » C# .net 用HtmlAgilityPack实现数据抓取(采集)可抓ajax异步填充的数据
分享到: 更多 (0)

自由技术,自由自在

项目合作联系我们