我想用 C# 替换网页中的文本

I wish to replace text in a web page in C#

这是我正在使用的代码

 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
     IHTMLDocument2 doc2 = webBrowser1.Document.DomDocument as IHTMLDocument2;
     StringBuilder html = new StringBuilder(doc2.body.outerHTML);

     String substitution = "<span style='background-color: rgb(255, 255, 0);'> sensor </span>";
     html.Replace("sensor", substitution);

     doc2.body.innerHTML = html.ToString();

       }

它可以工作,但是我不能使用表单,也不能使用网络浏览器

我已经尝试添加了

webBrowser1.Document.Write(html.ToString()); //在最后的doc2之后

但是显示的网页格式不正确

我将不胜感激,以得到这个修复

您首先需要在 HTMLDocument DOM 中找到您的元素,然后使用相关的 HTML.[=16 操作 innerHTML 属性 =]

有多种方法可以做到这一点,包括注入 javascript (here) or using HtmlAgilityPack.

以下代码使用GetElementsByTagName DOM function to iterate over the span tags in the document on this site: https://www.w3schools.com/html/

它将所有跨度文本(包括 "Tutorial" 替换为您提供的 html 片段。

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    var elements = webBrowser1.Document.GetElementsByTagName("span");
    foreach (HtmlElement element in elements)
    {
        if(string.IsNullOrEmpty(element.InnerText)) 
            continue;

        if (element.InnerText.Contains("Tutorial"))
        {
            element.InnerHtml = "<span style='background-color: rgb(255, 255, 0);'> sensor </span>";
        }
    }
}