using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace vsphere { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { this.webView21.Source = new System.Uri(textBox1.Text, System.UriKind.Absolute); } private async void webView21_NavigationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2NavigationCompletedEventArgs e) { object obj = await webView21.CoreWebView2.ExecuteScriptAsync("document.body.innerHTML");//第一次獲取沒法獲取后端的數據 textBox2.Text = obj.ToString(); } private async void button2_Click(object sender, EventArgs e) { object obj = await webView21.CoreWebView2.ExecuteScriptAsync("document.body.innerHTML");//等一會兒獲取HTML就能看到后端數據了 textBox2.Text = obj.ToString(); } private async void button3_Click(object sender, EventArgs e) { object obj = await webView21.CoreWebView2.ExecuteScriptAsync("document.body.innerText");//獲取頁面的文本 textBox2.Text = obj.ToString(); } private async void button4_Click(object sender, EventArgs e) { object obj = await webView21.CoreWebView2.ExecuteScriptAsync("$('.f3')[0].innerHTML");//jquery獲取頁面內容 textBox2.Text = obj.ToString(); } } }
webView2 獲取網頁源代碼
private async void fManual_Load(object sender, EventArgs e) { if (webView21.CoreWebView2 == null) { await webView21.EnsureCoreWebView2Async(); webView21.CoreWebView2.Settings.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.56"; } TextTool.Log(DateTime.Now + " 開始導航到" + url); webView21.Source = new Uri(url); } private void webView21_DocumentCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e) { var url = webView21.CoreWebView2.Source; var task = Task.Run(() => { Thread.Sleep(2000); }); task.GetAwaiter().OnCompleted(async () => { var html = await webView21.CoreWebView2.ExecuteScriptAsync("document.getElementsByTagName('html')[0].outerHTML"); //第一次獲取沒法獲取后端的數據 html = Unicode2String(html); var obj = $"{{\"html\":{html}}}"; var b = JsonConvert.DeserializeObject<Doc>(obj); File.WriteAllText("1.html", b.html); }); } /// <summary> /// Unicode轉字符串 /// </summary> /// <param name="source">經過Unicode編碼的字符串</param> /// <returns>正常字符串</returns> static string Unicode2String(string source) { return new Regex(@"\\u([0-9A-F]{4})", RegexOptions.IgnoreCase | RegexOptions.Compiled).Replace(source, x => Convert.ToChar(Convert.ToUInt16(x.Result("$1"), 16)).ToString()); }