返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#使用CefSharp控件实现爬虫
  • 688
分享到

C#使用CefSharp控件实现爬虫

2024-04-02 19:04:59 688人浏览 薄情痞子
摘要

一、CefSharp介绍 CEF 全称是Chromium Embedded Framework(Chromium嵌入式框架),是个基于Google Chromium项目的开源WEB

一、CefSharp介绍

CEF 全称是Chromium Embedded Framework(Chromium嵌入式框架),是个基于Google Chromium项目开源WEB browser控件,支持windows, linux, Mac平台。CEFSharp就是CEF的C#移植版本。

就是一款.net编写的浏览器包,方便你在winformWPF中内嵌的Chrome浏览器组件

GitHub地址:https://github.com/cefsharp/CefSharp 

安装

使用Nuget包引用

把项目改成64位

切换到X64

安装完之后工具栏应该会多出来这个控件(直接拖动用不了!)

二、使用

1、获得页面源代码

注意:

1、GetSourceAsync获取源码的方法是异步操作

2、判断页面加载完成,会触发FrameLoadEnd页面加载完成事件。使用CEF无法确定一个网站是否已经完全加载完成,我们只能在它每一次加载完成时,处理它的页面源码。(如果需要主动等待网站加载完成,可以试试使用selenium

public partial class FORM1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        ChromiumWebBrowser WebBrowser;

        private void Form1_Load(object sender, EventArgs e)
        {
            var settings = new CefSettings()
            {
                UserAgent = "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/73.0.3683.103 Mobile Safari/537.36",
            };

            //Perform dependency check to make sure all relevant resources are in our output directory.
            Cef.Initialize(settings, performDependencyCheck: true, browserProcesshandler: null);

            // cefsharp提供的浏览器控件,一般用它充满窗口就搞定了
            WebBrowser = new ChromiumWebBrowser("Http://www.163.com")
            {
                // 填充整个父控件
                Dock = DockStyle.Fill
            };
            WebBrowser.FrameLoadEnd += new EventHandler<FrameLoadEndEventArgs>(FrameEndFunc);

            // 添加到窗口的控件列表中
            this.panel1.Controls.Add(WebBrowser);

        }
        private void FrameEndFunc(object sender, FrameLoadEndEventArgs e)
        {
            MessageBox.Show("加载完毕");
            this.BeginInvoke(new Action(() =>
            {
                String html = WebBrowser.GetSourceAsync().Result;
                richTextBox1.Text = html;
            }));
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            // 结束时要销毁
            Cef.Shutdown();
        }
    }
}

效果:可以加载很多原生webbrowser不能加载的内容 可以适应iframe

2、执行页面中的js函数

测试的js代码

<html>
<body>
<button type="button" onclick="test(1,2)">测试按钮</button>
</body>
<script type="text/javascript">
function test(a,b)
{
   var c = testfunc(a,b);
   alert(c);
}
function testfunc(a,b)
{
    return a+b;
}

</script>
<html>

调用页面中的testfunc函数

private void button3_Click(object sender, EventArgs e)
{
    using (StreamReader sr = new StreamReader("JavaScript1.html"))
    {
        string html = sr.ReadToEnd();
        WebBrowser.LoadHtml(html, "http://testpage/");
    }
}

private void button4_Click(object sender, EventArgs e)
{
    String script = "testfunc(99,1)";
    var result = this.WebBrowser.EvaluateScriptAsync(script).Result.Result;
    MessageBox.Show(result.ToString());
}

效果

3、常用方法

//浏览网址:
WebBrowser = new ChromiumWebBrowser("https://www.baidu.com");
// 或
WebBrowser.Load("https://www.baidu.com");

// 获取HTML(整体): 
WebBrowser.GetSourceAsync().Result;

 // 获取HTML(特定Frame):
 WebBrowser.GetBrowser().GetFrame(“SI2_mem_index”).GetSourceAsync().Result;

//执行网页上的JavaScript:
 ExecuteJavaScriptAsync("document.getElementById('username').onkeydown();");

 //模拟左键点击:
 WebBrowser.GetBrowser().GetHost().SendMouseClickEvent(x, y, MouseButtonType.Left, false, 1, CefEventFlags.None);
 Thread.Sleep(50);
 WebBrowser.GetBrowser().GetHost().SendMouseClickEvent(x, y, MouseButtonType.Left, true, 1, CefEventFlags.None);

实例地址:https://github.com/zhaotianff/CSharpcrawler

到此这篇关于C#使用CefSharp控件实现爬虫的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#使用CefSharp控件实现爬虫

本文链接: https://lsjlt.com/news/150870.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#使用CefSharp控件实现爬虫
    一、CefSharp介绍 CEF 全称是Chromium Embedded Framework(Chromium嵌入式框架),是个基于Google Chromium项目的开源Web ...
    99+
    2024-04-02
  • C#使用selenium实现爬虫
    目录一、介绍:安装Selenium:二、等待1、隐式等待:ImplicitlyWait2、显示等待:WebDriverWait()三、查找(定位对象)四、获取页面元素和元素内容五、操...
    99+
    2024-04-02
  • C#如何使用selenium实现爬虫
    本文小编为大家详细介绍“C#如何使用selenium实现爬虫”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#如何使用selenium实现爬虫”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、介绍:Seleni...
    99+
    2023-07-02
  • C#使用CefSharp自定义缓存实现
    本文介绍CefSharp的缓存实现,先来说说添加缓存的好处: 提高页面加载加速:CefSharp缓存可以缓存已经加载过的页面和资源,当用户再次访问相同的页面时,可以直接从缓存中加载,...
    99+
    2023-05-18
    CefSharp自定义缓存 CefSharp基本配置 缓存 cefsharp教程
  • c#实现爬虫程序
    图1 如图1,我们工作过程中,无论平台网站还是企业官网,总少不了新闻展示。如某天产品经理跟我们说,推广人员想要抓取百度新闻中热点要闻版块提高站点百度排名。要抓取百度的热点要闻版本,...
    99+
    2024-04-02
  • 【Java】使用Java实现爬虫
    文章目录 使用Java实现爬虫一、HttpClient实现模拟HTTP访问1.1 HttpClient1.2 引入依赖1.3 创建简单的请求操作1.3.1 创建实例1.3.2 Jsoup应用 1.4 爬取过程中可能出现的问题...
    99+
    2023-08-24
    java 爬虫
  • C#使用CefSharp实现内嵌网页详解
    目录一、示例搭建步骤1. 创建项目2. 创建一个网页3. 添加CefSharp包4. 添加CefSharp控件5. 在C#中调用JS方法6. 效果展示二、总结一、示例搭建步骤 先给出...
    99+
    2023-05-14
    C# CefSharp实现内嵌网页 C# CefSharp内嵌网页 C# CefSharp
  • C#怎么使用CefSharp实现内嵌网页
    本文小编为大家详细介绍“C#怎么使用CefSharp实现内嵌网页”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么使用CefSharp实现内嵌网页”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. 创建项目...
    99+
    2023-07-05
  • c#怎么实现爬虫程序
    这篇文章主要介绍了c#怎么实现爬虫程序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇c#怎么实现爬虫程序文章都会有所收获,下面我们一起来看看吧。图1如图1,我们工作过程中,无论平台网站还是企业官网,总少不了新闻...
    99+
    2023-06-29
  • Python爬虫基础之初次使用scrapy爬虫实例
    项目需求 在专门供爬虫初学者训练爬虫技术的网站(http://quotes.toscrape.com)上爬取名言警句。 创建项目 在开始爬取之前,必须创建一个新的Scrapy项目。进入您打算存储代码的目录中,运行下列...
    99+
    2022-06-02
    Python scrapy框架 Python爬虫
  • 使用C++编写一个DHT爬虫,实现从DHT网络爬取BT种子
    以下是一个简单的使用C++编写的DHT爬虫,以从DHT网络中爬取BT种子:```cpp#include #include #incl...
    99+
    2023-10-12
    C++
  • 使用Python实现简单的爬虫框架
    目录一、请求网页二、解析 HTML三、构建爬虫框架爬虫是一种自动获取网页内容的程序,它可以帮助我们从网络上快速收集大量信息。在本文中,我们将学习如何使用 Python 编写一个简单的...
    99+
    2023-05-19
    Python如何实现爬虫框架 Python爬虫框架 Python爬虫
  • 如何使用HttpClient和HtmlParser实现简易爬虫
    这篇文章给大家分享的是有关如何使用HttpClient和HtmlParser实现简易爬虫的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   HttpClient 简介   H...
    99+
    2024-04-02
  • python中如何使用Scrapy实现定时爬虫
    这篇文章将为大家详细讲解有关python中如何使用Scrapy实现定时爬虫,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型...
    99+
    2023-06-14
  • 如何使用python实现垂直爬虫系统
    小编给大家分享一下如何使用python实现垂直爬虫系统,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!html_downloaderfrom urllib import requestdef&n...
    99+
    2023-06-29
  • 如何使用Scrapy-Redis实现分布式爬虫
    Scrapy-Redis是一个Scrapy框架的插件,可以用于实现分布式爬虫。下面是使用Scrapy-Redis实现分布式爬虫的步骤...
    99+
    2024-05-15
    Scrapy
  • 六个步骤学会使用Python爬虫爬取数据(爬虫爬取微博实战)
    用python的爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。 Python爬虫六部曲 第一步:安装request...
    99+
    2023-09-10
    python 爬虫 python入门 python爬虫 python爬虫爬取网页数据
  • 使用python爬虫实现子域名探测问题
    目录前言一、爬虫1.ip1382.bing二、通过字典进行子域名爆破三、python爬虫操作步骤1.写出请求头headers与目标网站url2.生成请求3.抓取数据4.分析源码,截取...
    99+
    2024-04-02
  • 怎么在python中使用feapde实现一个爬虫
    这篇文章给大家介绍怎么在python中使用feapde实现一个爬虫,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的...
    99+
    2023-06-14
  • 如何使用python爬虫实现最新12306抢票
    这篇文章将为大家详细讲解有关如何使用python爬虫实现最新12306抢票,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.环境python 3.7谷歌浏览器chromedriver.exe(浏览器驱动程...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作