CefSharp 浏览器核心,爬虫

摘要:
CefSharp是什么Aframeworkforembeddingweb-browsing-likecapabilitiestoastandard.NETapplication(WPForWindowsForms).Asetofhigh-levelcustomcontrolstomakeitreasonablyeasytointegratethesecapabilitiesinyourapplic
CefSharp是什么
  1. A framework for embedding web-browsing-like capabilities to a standard .NET application (WPF or Windows Forms).
  2. A set of high-level custom controls to make it reasonably easy to integrate these capabilities in your application.
  3. Built on top of CEF, the Chromium Embedded Framework by Marshall A. Greenblatt.
  4. CefSharp does little more than package CEF in a nice convenient .Net Wrapper.
  5. 以上是原文,其实就是一个浏览器核心,类似WebKit东西,然后可以嵌入程序中,方便咱们开发使用了
为什么用CefSharp
  1. CefSharp加载完成后,获取的是加载完成后的网页源代码,相当于google浏览器F12看到的源代码哦
  2. 这样,就不用分析对方浏览器如何加密的,获取到的数据,直接就是用户看到的最终数据
如何安装
  1. .net程序 右键---管理Nuget应用程序包--搜索CefSharp---安装
  2. 程序最低依赖是.net4.5.2
  3. 必须使用x86或者x64编译环境
初始化并使用
staticChromiumWebBrowser browser;
 
var settines = newCefSettings()
{
    Locale = "zh-CN",
    AcceptLanguageList = "zh-CN",
    MultiThreadedMessageLoop = true};
 
Cef.Initialize(settines);
browser = new ChromiumWebBrowser("www.baidu.com");//指定初始化地址
this.panel1.Controls.Add(browser);
browser.Dock =DockStyle.Fill;
 
//加载开始事件
browser.FrameLoadStart +=Browser_FrameLoadStart;
 
//加载完成后事件
browser.FrameLoadEnd += Web_FrameLoadEnd;
跳转到指定地址
  browser.Load("www.qq.com");
加载完成事件
private async void Web_FrameLoadEnd(objectsender, FrameLoadEndEventArgs e)
{
    //一个网页会调用多次,需要手动自己处理逻辑
    var url =e.Url;
    var result = awaitbrowser.GetSourceAsync();
    var html =result;
}
调用JS
browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("alert('这是c#调用的js,给文本框赋值!')");
 
 browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('kw').value='在C#里面给页面文本框进行赋值'");
 
//你可以做你任何想做的事了
全部源代码
namespaceWindowsFormsApp2
{
    public partial classForm1 : Form
    {
        staticChromiumWebBrowser browser;
        publicForm1()
        {
            InitializeComponent();
            DataInit();
        }

        /// <summary>
        ///初始化
        /// </summary>
        public voidDataInit()
        {
            var settines = newCefSettings()
            {
                Locale = "zh-CN",
                AcceptLanguageList = "zh-CN",
                MultiThreadedMessageLoop = true};

            Cef.Initialize(settines);
            browser = new ChromiumWebBrowser("www.baidu.com");//指定初始化地址
            this.panel1.Controls.Add(browser);
            browser.Dock =DockStyle.Fill;

            //加载开始事件
            browser.FrameLoadStart +=Browser_FrameLoadStart;

            //加载完成后事件
            browser.FrameLoadEnd +=Web_FrameLoadEnd;
        }

        private void Browser_FrameLoadStart(objectsender, FrameLoadStartEventArgs e)
        {
            var url =e.Url;
        }

        private void button1_Click(objectsender, EventArgs e)
        {
            browser.Load(txt_Url.Text);
        }

        private async void Web_FrameLoadEnd(objectsender, FrameLoadEndEventArgs e)
        {
            //一个网页会调用多次,需要手动自己处理逻辑
            var url =e.Url;
            var result = awaitbrowser.GetSourceAsync();
            var html =result;

            ////调用js
            //browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("alert('这是c#调用的js,给文本框赋值!')");
            ////txtAccount
            //browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('kw').value='在C#里面给页面文本框进行赋值'");
}
    }
}

免责声明:文章转载自《CefSharp 浏览器核心,爬虫》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇浅谈JEECG多数据源的使用koroFileHeader插件快速入门使用教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python如何获取公众号下面粉丝的openid

如何获取公众号下面粉丝的openid呢,首先要获取一个access_token,这个token可不是令牌(Token),如何获取这个access_token呢?有两种方法,方法如下: #-*- coding: cp936 -*- #python 27 #xiaodeng #原文在 https://www.cnblogs.com/dengyg200891/p...

微信小程序网络超时的处理

连接网络总有可能客户端因为网络情况,无法连接到微信服务器或者开发者服务器。但是有的只有在小程序启动时才能运行,比如 onLaunch,通过这个我们可以获取用户的基本信息,或者定位用来做下一步处理,如果这个无法获取数据,会导致整个小程序的失败。 所以我建议可以把错误分两个级别,假如是开发者服务器连接不上,可以通过重载页面来处理,但是如果是onLaunch中的...

权限模块设计及使用

最近一直在做权限那一块,越做越乱,有很多疑问,想和大家探讨交流。希望大家不吝赐教、 1、项目用的是spring security框架,在用这个框架的时候,配置文件的配置就花了很长时间,然后就是将项目中的所有url都进行控制,输入数据库或配到配置文件中。 2、在做的时候,出现了分歧,老大的意思是只控制到菜单级别,有权限就可以看到菜单,没权限就不能看到菜单。但...

Fiddler抓包6-get请求(url详解)

前言 上一篇介绍了Composer的功能,可以模拟get和post请求,get请求有些是不带参数的,这种比较容易,直接放到url地址栏就行。有些get请求会带有参数,本篇详细介绍url地址格式。 一、url详解 1.url就是我们平常打开百度在地址栏输入的:https:www.baidu.com,如下图,这个是最简单的url地址,打开的是百度的主页 2...

Consul--客户端访问Consul服务

根据上一篇Consul服务的注册和发现,那么客户端如何去访问我们的Consul服务?其实客户端访问Consul实际上是访问Consul的服务实例。客户端自己可以实现对Consul服务实例的轮训,每次刷新端口都会发生改变,由于客户端访问Consul采用的轮训策略,所以每次刷新Consul的服务实例都会发生改变。 下面就直接上客户端访问Consul服务实例的代...

easyui icon的使用相关

easyui的默认图标有以下这些: .icon-blank{ background:url('icons/blank.gif') no-repeat; } .icon-add{ background:url('icons/edit_add.png') no-repeat; }...