CefSharp 瀏覽器核心,爬蟲


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#里面給頁面文本框進行賦值'");
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM