基于C#.NET+Phantomjs+Sellenium的高级网络爬虫程序。可执行javascript代码、触发各类事件、操纵页面Dom结构、甚至可以移除不喜欢的css样式。
很多网站都用Ajax动态加载、翻页。比如携程网的评论数据。如果是用之前那个简单的爬虫。是很难直接抓取到所有评论数据的。我们需要去分析那漫天的Javascript代码寻找API数据接口。还要时刻提防对方增加数据陷阱或修改API接口地。
如果通过高级爬虫。就可以完全无视这些问题。无论他们如何加密Javascript代码来隐藏API接口。最终的数据都必要呈现在网站页面上的Dom结构中。不然普通用户也就没法看到了。所以我们可以完全不分析API数据接口。直接从Dom中提取数据。甚至都不需要写那复杂的正则表达式。
主要特性
-
支持Ajax请求事件的触发及捕获;
-
支持异步并发抓取;
-
支持自动事件通知;
-
支持代理切换;
-
支持操作Cookies;
运行截图
-
抓取酒店数据
-
抓取评论数据
示例代码
///<summary> ///抓取酒店评论 ///</summary> staticvoidMain(string[]args) { varhotelUrl="http://hotels.ctrip.com/hotel/434938.html"; varhotelCrawler=newStrongCrawler(); hotelCrawler.OnStart+=(s,e)=> { Console.WriteLine("爬虫开始抓取地址:"+e.Uri.ToString()); }; hotelCrawler.OnError+=(s,e)=> { Console.WriteLine("爬虫抓取出现错误:"+e.Uri.ToString()+"。异常消息:"+e.Exception.ToString()); }; hotelCrawler.OnCompleted+=(s,e)=> { HotelCrawler(e); }; varoperation=newOperation { Action=(x)=>{ //通过Selenium驱动点击页面的“酒店评论” x.FindElement(By.XPath("//*[@id='commentTab']")).Click(); }, Condition=(x)=>{ //判断Ajax评论内容是否已经加载成功 returnx.FindElement(By.XPath("//*[@id='commentList']")).Displayed&&x.FindElement(By.XPath("//*[@id='hotel_info_comment']/div[@id='commentList']")).Displayed&&!x.FindElement(By.XPath("//*[@id='hotel_info_comment']/div[@id='commentList']")).Text.Contains("点评载入中"); }, Timeout=5000 }; hotelCrawler.Start(newUri(hotelUrl),null,operation);//不操作JS先将参数设置为NULL Console.ReadKey(); } github:https://github.com/microfisher/Strong-Web-Crawler
以上就是由优质生活领域创作者 生活常识网 整理编辑的,如果觉得有帮助欢迎收藏转发~
本文标题:c#打开浏览器并全屏(C打开谷歌浏览器)
本文地址:http://www.shenzhoubaby.com/5495.html,转载请说明来源于:生活常识网
声明:本站部分文章来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系@qq.com进行处理。分享目的仅供大家学习与参考,不代表本站立场。
本文地址:http://www.shenzhoubaby.com/5495.html,转载请说明来源于:生活常识网
声明:本站部分文章来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系@qq.com进行处理。分享目的仅供大家学习与参考,不代表本站立场。