加载WebBrowser文档后,其文档包含以下内容:
<div id="toextract">
<div>This</div>
<div>is</div>
Sample
<div>text</div>
I
<div>want to</div>
<div>Extract</div>
</div>
我想提取这些元素的InnerHtml,以便输出为:
这是我要提取的示例文字
但我明白了:
这是想要提取的文字
单词 I 和示例不在HtmlElement中。这是我的代码:
string Ex = "";
HtmlElement elem = webBrowser1.Document.GetElementById("toextract");
HtmlElementCollection elems = elem.All
for(int i=0;i<elems.Count;i++)
Ex += elems[i].InnerHtml + " ";
我的代码跳过文本节点(没有标记的节点)。我认为它是因为它们不被视为HtmlElement。 如何将它们包含在我提取的文本中?
答案 0 :(得分:2)
只需使用
获取文字elem.InnerText
并删除任何类似的换行符
elem.InnerText.Replace(System.Environment.NewLine,“”)
答案 1 :(得分:0)
尝试从元素更改为childNodes,然后剥离不需要的空格和换行符。像这样的东西(尚未测试):
string Ex = "";
HtmlElement elem = webBrowser1.Document.GetElementById("toextract");
NodeList nodes = elem.childNodes;
for(int i=0;i<nodes.Count;i++)
Ex += nodes[i].data + " ";
Ex = Regex.Replace(Ex, @"(?:(?:\r?\n)+ +){2,}", @" ");
对于类似的Q&amp; A,请参阅 best way to get child nodes 和 How to remove extra returns and spaces in a string by regex?