c# webview2获取网页HTML的绝招

本文探讨了一个使用C#和Visual Studio开发的应用,通过Form1中的按钮操作,利用VSphere中的WebView2控件实现网页内容的动态抓取。展示了如何使用JavaScript执行和获取HTML、innerText,以及运用jQuery选择器获取特定元素的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
        }
    }
}

C#中使用WebView2控制浏览器内的网页元素并进行交互,如获取元素并点击,可以通过WebView2的CoreWebView2自动化接口实现。以下是实现这一功能的基本步骤: 1. **初始化WebView2控件**:确保你的项目已经安装了WebView2的运行时,并且在你的应用程序中正确地初始化了WebView2控件。 2. **设置CoreWebView2**:当WebView2控件加载完成后,你需要创建一个CoreWebView2实例。通常,你可以在WebView2控件的CoreWebView2InitializationCompleted事件中实现这一点。 3. **注入脚本和执行操作**:使用CoreWebView2的ExecuteScriptAsync方法注入JavaScript代码,该代码可以获取页面元素,并对这些元素执行操作,如点击。你可以使用JavaScript的document.querySelector或document.querySelectorAll方法来获取DOM元素。 4. **执行点击事件**:获取到DOM元素后,可以通过JavaScript执行点击事件。通常,元素的点击可以通过调用其click()方法完成。 下面是一个简化的示例代码,展示了如何实现上述步骤: ```csharp private async void InitializeWebView2Async() { await webView2Control.EnsureCoreWebView2Async(null); webView2Control.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested; webView2Control.CoreWebView2.DOMContentLoaded += CoreWebView2.DOMContentLoaded; await webView2Control.CoreWebView2.ExecuteScriptAsync("document.body.innerHTML = 'Hello, world!';"); } // 你可以在DOMContentLoaded事件中注入获取元素的脚本 private async void CoreWebView2DOMContentLoaded(WebView2 sender, CoreWebView2DOMContentLoadedEventArgs args) { await webView2Control.CoreWebView2.ExecuteScriptAsync("var element = document.querySelector('button'); element.click();"); } ``` 在上述代码中,当DOMContentLoaded事件触发时,我们注入了一个JavaScript脚本,该脚本首先通过document.querySelector获取页面上的第一个按钮元素,然后调用该元素的click方法来模拟点击操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xcagy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值