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编译环境

初始化并使用

static ChromiumWebBrowser browser;

var settines = new CefSettings()
{
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(object sender, FrameLoadEndEventArgs e)
{
//一个网页会调用多次,需要手动自己处理逻辑
var url = e.Url;
var result = await browser.GetSourceAsync();
var html = result;
}

调用JS

browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("alert('这是c#调用的js,给文本框赋值!')");

 browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('kw').value='在C#里面给页面文本框进行赋值'");

//你可以做你任何想做的事了

全部源代码

namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
static ChromiumWebBrowser browser;
public Form1()
{
InitializeComponent();
DataInit();
} /// <summary>
/// 初始化
/// </summary>
public void DataInit()
{
var settines = new CefSettings()
{
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(object sender, FrameLoadStartEventArgs e)
{
var url = e.Url;
} private void button1_Click(object sender, EventArgs e)
{
browser.Load(txt_Url.Text);
} private async void Web_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
//一个网页会调用多次,需要手动自己处理逻辑
var url = e.Url;
var result = await browser.GetSourceAsync();
var html = result; ////调用js
//browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("alert('这是c#调用的js,给文本框赋值!')");
////txtAccount
//browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('kw').value='在C#里面给页面文本框进行赋值'");
}
}
}

CefSharp 浏览器核心,爬虫的更多相关文章

  1. javascript判断浏览器核心

    20 21 22 23 24 /** * 判断浏览器核心 * @return IE6.0/IE7.0/IE8.0/FireFox/Opera/other * @author ypz */ functi ...

  2. 修复CefSharp浏览器组件中文输入Bug

    概述 最近在win10上开发wpf应用,需要将CefSharp中wpf版本的浏览器组件(版本号v51.0.0)嵌入到应用中,但是发现不支持中文输入,GitHub上有这个问题的描述,参照其提到的方法可以 ...

  3. CefSharp浏览器网页中文语言设置

    设置浏览器语言而非cef语言 ChromiumWebBrowser browser = new ChromiumWebBrowser(url); BrowserSettings browserSett ...

  4. selenium:能够模拟人类打开浏览器的爬虫利器

    介绍 selenium相当于是一个机器人,可以模拟人类登陆浏览器的行为,比如点击.填充数据.删除cookie等等.Chromedriver是一个驱动Chrome的程序,使用它才可以驱动浏览器,其实Ch ...

  5. 使用cefsharp 浏览器放大

    (1)如果浏览器位置有问题,需要设置 Cef.EnableHighDPISupport(); (2)如果要放大浏览器,需要设置  browser.SetZoomLevel(1.25); Chromiu ...

  6. [Asp.Net Core] Blazor Server Side 扩展用途 - 配合CEF来制作带浏览器核心的客户端软件 (二) 可运行版本

    前言 大概3个星期之前立项, 要做一个 CEF+Blazor+WinForms 三合一到同一个进程的客户端模板. 这个东西在五一的时候做出了原型, 然后慢慢修正, 在5天之前就上传到github了. ...

  7. headless webkit(无界面浏览器、爬虫)

    phantomjs / puppeteer https://github.com/amir20/phantomjs-node https://github.com/GoogleChrome/puppe ...

  8. CefSharp.v49.0.1浏览器控件完全WPF版,实现禁止弹出新窗口,在同一窗口打开链接,并且支持带type="POST" target="_blank"的链接

    需求场景:在查询页面,填写查询条件,查询条件包括上传的图片,根据图片的特征查询,这就需要在提交的时候,使用POST提交,因为GET提交无法提交图片数据,提交查询条件之后,在新的窗口展示查询结果.(当然 ...

  9. 基于.net开发chrome核心浏览器【四】

    原文:基于.net开发chrome核心浏览器[四] 一: 上周去北京出差,给国家电网的项目做架构方案,每天都很晚睡,客户那边的副总也这样拼命工作. 累的不行了,直接导致第四篇文章没有按时发出来. 希望 ...

随机推荐

  1. python+selenium的搭建过程

    搭建步骤 1.第一步没啥好说的,肯定是先安装python 下载地址:http://download.csdn.net/detail/intel80586/4297269 全部默认安装即可. 安装完毕后 ...

  2. JBoss7.1.1远程无法访问

    一般情况下在JBoss7.1.1.Final版本中配置standalone/configuration/standalone.xml<interfaces>里面name为public的&l ...

  3. IdentityServer4授权模式应用场景

    OpenID 和 OAuth 的区别 IdentityServer4,NET Core下的安全框架 客户端模式(Client Credentials) 密码模式(resource owner pass ...

  4. Vue路由开启keep-alive时的注意点

    Vue路由开启keep-alive时的注意点   这个不是业务的要求,但是看到每次进入页面就重新渲染DOM然后再获取数据更新DOM,觉得作为一个前端工程师有必要优化下的加载逻辑,正好vue提供了 ke ...

  5. bzoj 5368: [Pkusc2018]真实排名

    Description 小C是某知名比赛的组织者,该比赛一共有n名选手参加,每个选手的成绩是一个非负整数,定义一个选手的排名是 :成绩不小于他的选手的数量(包括他自己).例如如果3位选手的成绩分别是[ ...

  6. [转]用Excel制作甘特图并管理项目

    对于比较简单的项目管理,或绘制甘特图,选用电子表格工具——比如价格高也最强大的Excel.开源的OpenOffice.免费的WPS——可能比项目管理软件更方便. 1. XL-Easy Gantt 模板 ...

  7. input textbox tag

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAB0CAIAAACaKavmAAAJ0klEQVR4nO3dO2wb5wHA8YOHIkOLrk

  8. CSS代码优化(转载)

    要点1:css代码优化作用与意义 1.减少占用网页字节.在同等条件下缩短浏览器下载css代码时间,相当于加快网页打开速度:2.便于维护.简化和标准化css代码让css代码减少,便于日后维护:3.让自己 ...

  9. 在 Azure 上创建和链接 MySQL 数据库

    本快速入门介绍了如何使用 Azure 门户创建并连接 MySQL 数据库.在本教程中完成的所有操作均符合 1 元试用条件. 开始之前如果您还没有 Azure 账户,可以申请 1 元试用账户 步骤1:创 ...

  10. VMware 扩展磁盘容量

    背景:创建虚拟机后,发现原先定的磁盘容量不够了,这时候可以通过vmware扩展磁盘容量 步骤一 先关闭虚拟机,右键虚拟机设置:(我没关虚拟机,所以灰显了) 步骤二: 启动VMware环境下的Linux ...