我想用 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>";
}
}
}
这是我正在使用的代码
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>";
}
}
}