早已久仰CefSharp大名,今日才得以實踐,我其實想用CefSharp來訪問網站頁面,而後抓取html源代碼進行分析,若是使用自帶的WebBrowser控件,可能會出現一些不兼容js的錯誤。
CefSharp容許您在.NET應用程序中嵌入Chromium。它是Marshall A. Greenblatt 圍繞Chromium Embedded Framework(CEF)的輕量級.NET包裝器。大約30%的綁定是用C ++ / CLI編寫的,這裏的大部分代碼都是C#。它能夠從C#或VB或任何其餘CLR語言中使用。CefSharp提供WPF和WinForms Web瀏覽器控件實現。
GitHub地址:https://github.com/cefsharp/CefSharp 首先,我用vs新建一個winform的項目,環境以下:
- .Net框架版本:4.6.2
- Visual Studio 2013: 及以上,我這裏使用的是vs2017版本
nuget命令以下:
- Install-Package CefSharp.WinForms -Version 71.0.2
複製代碼
執行完成後,程序會自動添加依賴包,以下:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="cef.redist.x64" version="3.3578.1870" targetFramework="net462" />
<package id="cef.redist.x86" version="3.3578.1870" targetFramework="net462" />
<package id="CefSharp.Common" version="71.0.2" targetFramework="net462" />
<package id="CefSharp.WinForms" version="71.0.2" targetFramework="net462" />
</packages>
安裝完成後,編譯項目報錯以下:
看到網上的解決說:將活動解決方案平臺改爲 x86 (CEF不能自適應 x86 | x64,必須選擇一個目標),目標平臺也必須和解決方案平臺一致。
從CefSharp 51開始,您能夠使用AnyCPU使用CefSharp,但它不能單獨工做,由於您須要在2個特定文件中進行一些更改。
按照網友的辦法,應該是能夠解決的,我沒有試,其實cef已經支持AnyCPU了,可是須要配置,配置方案以下: 1:首先右擊項目,卸載解決方案,編輯項目的.csproj文件,並在第一個 <PropertyGroup>的節點添加:
- <CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>
複製代碼
<ignore_js_op>
QQ截圖20190402195358.jpg (108.69 KB, 下載次數: 5)php
下載附件 html
2019-4-2 20:21 上傳git
2:添加完成後,從新加載項目,而且在app.config添加以下配置:
- <runtime>
- <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
- <probing privatePath="x86"/>
- </assemblyBinding>
- </runtime>
複製代碼
<ignore_js_op>
QQ截圖20190402202239.jpg (31.78 KB, 下載次數: 4)github
下載附件 redis
2019-4-2 20:22 上傳chrome
3:在Cef.Initialize調用前,配置瀏覽器啓動路徑,以下代碼:
- var setting = new CefSettings();
- // 設置語言
- setting.Locale = "zh-CN";
- //cef設置userAgent
- setting.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36";
- //配置瀏覽器路徑
- setting.BrowserSubprocessPath = @"x86\CefSharp.BrowserSubprocess.exe";
- CefSharp.Cef.Initialize(setting, performDependencyCheck: true, browserProcessHandler: null);
複製代碼
解決方案參考:https://github.com/cefsharp/CefSharp/issues/1714 完成的代碼以下:
- using CefSharp;
- using CefSharp.WinForms;
- using System;
- using System.Windows.Forms;
- namespace DiscuzPost
- {
- public partial class Form1 : Form
- {
- public ChromiumWebBrowser chromeBrowser;
- public Form1()
- {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- var setting = new CefSettings();
- // 設置語言
- setting.Locale = "zh-CN";
- //cef設置userAgent
- setting.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36";
- //配置瀏覽器路徑
- setting.BrowserSubprocessPath = @"x86\CefSharp.BrowserSubprocess.exe";
- Cef.Initialize(setting, performDependencyCheck: true, browserProcessHandler: null);
- chromeBrowser = new ChromiumWebBrowser("https://www.itsvse.com");
- // Add it to the form and fill it to the form window.
- this.Controls.Add(chromeBrowser);
- chromeBrowser.Dock = DockStyle.Fill;
- }
- private void Form1_FormClosing(object sender, FormClosingEventArgs e)
- {
- Cef.Shutdown();
- }
- }
- }
複製代碼
運行項目: <ignore_js_op>
QQ截圖20190402202614.jpg (263.95 KB, 下載次數: 4)瀏覽器
下載附件 app
2019-4-2 20:26 上傳框架
參考資料:https://ourcodeworld.com/article ... informs-application (完) |
出處:https://www.itsvse.com/thread-7371-1-1.html網站