百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

C#基于浏览器内核的高级爬虫(c#爬取网页内容)

liuian 2025-05-05 17:01 60 浏览

基于C#.NET+PhantomJS+Sellenium的高级网络爬虫程序。可执行Javascript代码、触发各类事件、操纵页面Dom结构、甚至可以移除不喜欢的CSS样式。

很多网站都用Ajax动态加载、翻页,比如携程网的评论数据。如果是用之前那个简单的爬虫,是很难直接抓取到所有评论数据的,我们需要去分析那漫天的Javascript代码寻找API数据接口,还要时刻提防对方增加数据陷阱或修改API接口地。

如果通过高级爬虫,就可以完全无视这些问题,无论他们如何加密Javascript代码来隐藏API接口,最终的数据都必要呈现在网站页面上的Dom结构中,不然普通用户也就没法看到了。所以我们可以完全不分析API数据接口,直接从Dom中提取数据,甚至都不需要写那复杂的正则表达式。


主要特性

  • 支持Ajax请求事件的触发及捕获;
  • 支持异步并发抓取;
  • 支持自动事件通知;
  • 支持代理切换;
  • 支持操作Cookies;


运行截图

  • 抓取酒店数据


  • 抓取评论数据


示例代码

 /// <summary>
    /// 抓取酒店评论
    /// </summary>
	static void Main(string[] args)
    {
        var hotelUrl = "http://hotels.ctrip.com/hotel/434938.html";
        var hotelCrawler = new StrongCrawler();
        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);
        };
        var operation = new Operation
        {
            Action = (x) => {
                //通过Selenium驱动点击页面的“酒店评论”
                x.FindElement(By.XPath("//*[@id='commentTab']")).Click();
            },
            Condition = (x) => {
                //判断Ajax评论内容是否已经加载成功
                return x.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(new Uri(hotelUrl), null, operation);//不操作JS先将参数设置为NULL

        Console.ReadKey();
    }

github:https://github.com/microfisher/Strong-Web-Crawler

相关推荐

台式键盘锁住了打不了字怎么解锁
台式键盘锁住了打不了字怎么解锁

1.找到在键盘上靠左侧的位置,有一个fn的键,按住fn键。2.然后找到键盘最上面f8的键,把fn和f8一起按住,即可完成操作。3.然后此时看到键盘已经解除锁定,就可以可以正常输入了,这样就完成了键盘的解锁操作。...

2025-12-25 21:05 liuian

怎么超频显卡(显卡怎么超频使用)

显卡超频犯法如下:1、首先是显卡体质的检测,如果不知道显卡的体质,盲目加电压或者频率很容易导致超频的失败,检测显卡体质需要用到软件超频和拷机软件。2、接下来是BIOS准备阶段,用户可以选择从现有显卡提...

自动关机怎么设置win10指令(win10设置自动关机代码)

1最简单的方法是通过系统自带的计划任务来设置自动开关机。2打开‘任务计划程序’,选择‘创建基本任务’,按照提示完成设置,可以选择定时执行或在特定条件下执行。3另外也可以通过第三方软件来实现自动开...

苹果系统修复软件(iphone修复软件)

牛学长苹果修复工具是一个知名的修复工具,经过多年的发展和改进,已经被广大用户验证为靠谱可信赖的工具。它具有强大的修复功能,可以解决苹果设备的各种问题,如系统崩溃、黑屏、无法开机等。该工具采用先进的技术...

硬盘损坏的原因(硬盘损坏严重怎么处理)

导致电脑硬盘坏的原因有以下几点:1、经常性的非正常关机、断电等情况都会导致硬盘出现坏块,突然停电后又马上恢复最容易引起系统故障,严重的就会让硬盘直接物理损坏。2、电压不稳定,很容易造成物理坏道。3、灰...

win10调制解调器出现错误(window10调制解调器报告了一个错误)

方法一1、按下win+i组合键打开windows设置,在设置界面点击网络和internet;2、在左侧点击【拨号】按钮;3、在右侧拨号下方点击宽带链接,然后点击【高级选项】;4、打开...

台式电脑如何设置ip地址(设置台式机ip地址)
台式电脑如何设置ip地址(设置台式机ip地址)

方法1、打开电脑的控制面板,进入设置界面。2、然后找到网络和Internet选项,点击进入。3、进入之后点击选择网络和共享中心。4、点击左侧的更改适配器设置栏。5、然后找到需要设置的网络连接,鼠标右键选择属性。6、然后双击Internet协...

2025-12-25 18:05 liuian

centos系统安装教程(centos安装总结)

之前在线在Debian内安装Gentoo,大体步骤如下:1.mkdir/new,chroot进去正常安装新系统。2.将静态编译的busybox放到根目录。3.停掉所有服务,umount所有有关目录。...

不用电脑怎么恢复(不用电脑怎么恢复出厂设置)

操作方法01方法一:通过设置重置电脑使用快捷键Windows+A,点击所有设置,点击更新系统-恢复,重置此电脑点开始。02选择仅保留我的文件,删除应用和设置,提示窗口会显示出将被删除的应用,点击下一步...

最强视频播放器(2020视频播放器排行榜前十名)

应该是MXPlayer。他是一款安卓版上十分强悍的视频播放器,他以解码性能强、兼容性高而闻名,并且,对视频字幕的支持更是堪称一绝,支持在线匹配,对特效字幕的支持也是非常的高的。作为一款优质的手机视频播...

三星固态驱动官网(三星固态官方软件)

三星手机序列号查询官网是http://www.samsung110.com/。手机序列号(S/N号)查询方法:设置-关于手机-状态-序列号(序号)。或通过以下方式查询:通过机器包装盒上的标贴查询用...

雨林木风u盘装机教程(雨林木风u盘装系统,步骤)

电脑系统安装步骤:1、用【u启动u盘启动盘制作工具】制作u启动盘,重启电脑等待出现开机画面按下启动快捷键,选择u盘启动进入到u启动主菜单,选取“【02】Win8PE装机维护版(新机器)”选项2、进...

无法连接到这个网络是怎么回事

有可能是网络本身有问题,需要联系运营商解决。也有可能是因为网卡驱动问题,首先鼠标右击开始按钮,然后点击设备管理器,双击网络适配器,最后查看网卡驱动有没有出现黄色的感叹号,如果有的话,右击选择更新驱动程...

刷机精灵怎么解除锁屏密码(刷机精灵怎么解除锁屏密码设置)

刷机精灵解锁手机锁屏密码方法:下载好刷机精灵。打开链接手机,之后在刷机精灵页面里能看到“实用工具”的选项。解除手机解锁图案要获取root权限,若没有获取的可以在这里点击获取root权限的选项。获取了...

联想云服务官网(联想云服务官网查找手机)

华为手机也是可以下载云服务软件安装然后使用联想账号登陆云服务的。部分云服务功能将无法使用。登录联想云服务方法:点开云服务软件,选择立即使用,即出现:手机号码登入,邮箱登入,第三方登入;手机号码登入,邮...