CefSharp 浏览器核心,爬虫
CefSharp是什么
- A framework for embedding web-browsing-like capabilities to a standard .NET application (WPF or Windows Forms).
- A set of high-level custom controls to make it reasonably easy to integrate these capabilities in your application.
- Built on top of CEF, the Chromium Embedded Framework by Marshall A. Greenblatt.
- CefSharp does little more than package CEF in a nice convenient .Net Wrapper.
- 以上是原文,其实就是一个浏览器核心,类似WebKit东西,然后可以嵌入程序中,方便咱们开发使用了
为什么用CefSharp
- CefSharp加载完成后,获取的是加载完成后的网页源代码,相当于google浏览器F12看到的源代码哦
- 这样,就不用分析对方浏览器如何加密的,获取到的数据,直接就是用户看到的最终数据
如何安装
- .net程序 右键---管理Nuget应用程序包--搜索CefSharp---安装
- 程序最低依赖是.net4.5.2
- 必须使用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 浏览器核心,爬虫的更多相关文章
- javascript判断浏览器核心
20 21 22 23 24 /** * 判断浏览器核心 * @return IE6.0/IE7.0/IE8.0/FireFox/Opera/other * @author ypz */ functi ...
- 修复CefSharp浏览器组件中文输入Bug
概述 最近在win10上开发wpf应用,需要将CefSharp中wpf版本的浏览器组件(版本号v51.0.0)嵌入到应用中,但是发现不支持中文输入,GitHub上有这个问题的描述,参照其提到的方法可以 ...
- CefSharp浏览器网页中文语言设置
设置浏览器语言而非cef语言 ChromiumWebBrowser browser = new ChromiumWebBrowser(url); BrowserSettings browserSett ...
- selenium:能够模拟人类打开浏览器的爬虫利器
介绍 selenium相当于是一个机器人,可以模拟人类登陆浏览器的行为,比如点击.填充数据.删除cookie等等.Chromedriver是一个驱动Chrome的程序,使用它才可以驱动浏览器,其实Ch ...
- 使用cefsharp 浏览器放大
(1)如果浏览器位置有问题,需要设置 Cef.EnableHighDPISupport(); (2)如果要放大浏览器,需要设置 browser.SetZoomLevel(1.25); Chromiu ...
- [Asp.Net Core] Blazor Server Side 扩展用途 - 配合CEF来制作带浏览器核心的客户端软件 (二) 可运行版本
前言 大概3个星期之前立项, 要做一个 CEF+Blazor+WinForms 三合一到同一个进程的客户端模板. 这个东西在五一的时候做出了原型, 然后慢慢修正, 在5天之前就上传到github了. ...
- headless webkit(无界面浏览器、爬虫)
phantomjs / puppeteer https://github.com/amir20/phantomjs-node https://github.com/GoogleChrome/puppe ...
- CefSharp.v49.0.1浏览器控件完全WPF版,实现禁止弹出新窗口,在同一窗口打开链接,并且支持带type="POST" target="_blank"的链接
需求场景:在查询页面,填写查询条件,查询条件包括上传的图片,根据图片的特征查询,这就需要在提交的时候,使用POST提交,因为GET提交无法提交图片数据,提交查询条件之后,在新的窗口展示查询结果.(当然 ...
- 基于.net开发chrome核心浏览器【四】
原文:基于.net开发chrome核心浏览器[四] 一: 上周去北京出差,给国家电网的项目做架构方案,每天都很晚睡,客户那边的副总也这样拼命工作. 累的不行了,直接导致第四篇文章没有按时发出来. 希望 ...
随机推荐
- select for update和select for update wait和select for update nowait的区别
CREATE TABLE "TEST6" ( "ID" ), "NAME" ), "AGE" ,), "SEX ...
- LinuxShell脚本编程基础1-vi编辑器的使用
1.输入模式与命令模式的切换 按 [Esc]键 切换到 命令模式: 2.保存与退出 :w mytest.txt 保存文件名 :q 退出 :q! 强制退出 :wq 保存并退出 3.插入文本命令 i 在 ...
- HTML5跨域请求--POST方式
var xmlHttp; // Create the XHR object. function createCORSRequest(method, url) { var xhr = new XMLHt ...
- 带有权重的服务器SLB的实现
1)参考了网络上的算法,但是那个算法仅仅是用于展示“权重轮循”的意图,在真正的网络下,因为是并行的,所以不可能单纯一个简单的循环可以解决问题. 2)用lock的话性能显然有损失. 3)想了一阵,结合C ...
- Ubuntu16.04 静态IP配置
Ubuntu16.04 静态IP配置 修改配置 登录系统后,编辑文件/etc/network/interfaces.原始的内容如下: # This file describes the network ...
- 腾讯云AI平台张文杰:构建一站式机器学习服务平台
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 5月24日,以"无界数据无限智能"为主题的腾讯"云+未来"峰会AI大数据分论坛在广州拉开帷幕.此次分 ...
- div+css 让一个小div在另一个大div里面 垂直居中
方法1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 .parent { width:800px; height:500px; ...
- TSM简介
转自:https://www.cnblogs.com/Study-Blog/p/8644376.html Tivoli TSM产品功能详述Tivoli TSM(Tivoli Storage Manag ...
- 解决Openwrt安装插件提示一下错误的办法
解决Openwrt安装插件提示一下错误的办法 Openwrt安装17ce插件,提示一下错误: Collected errors: * check_data_file_clashes: Package ...
- 第2章 css边框属性
圆角效果 border-radius border-radius是向元素添加圆角边框. 使用方法: border-radius:10px; /* 所有角都使用半径为10px的圆角 */ border- ...