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#裏面給頁面文本框進行賦值'");
        }
    }
}
相關文章
相關標籤/搜索