2011-07-27 81 views
7

需要HTML敏捷软件包的一些帮助!使用Html Agility Pack从HTML BODY节点提取内部文本

基本上我想抓住纯文本与HTML的身体节点。 到目前为止,我已经在vb.net中尝试过这种方式,并且它无法返回内部文本的含义 没有看到任何变化,从我所能看到的情况看,至少是最少的。

Dim htmldoc As HtmlDocument = New HtmlDocument 
htmldoc.LoadHtml(html) 

Dim paragraph As HtmlNodeCollection = htmldoc.DocumentNode.SelectNodes("//body") 

If Not htmldoc Is Nothing Then 
    For Each node In paragraph 
     node.ParentNode.RemoveChild(node, True) 
    Next 
End If 

Return htmldoc.DocumentNode.WriteContentTo 

我已经试过这样:

Return htmldoc.DocumentNode.InnerText 

但仍然没有运气!

任何建议???

+1

[抓住所有从使用HTML敏捷性包HTML文本(可能重复http://stackoverflow.com/questions/4182594/grab-all-text-from-html-用-html-agility-pack) – richard

回答

13

如何:

Return htmldoc.DocumentNode.SelectSingleNode("//body").InnerText 
+0

嗨,杰夫,我早些时候尝试过,但返回的数据包含许多不需要的字符,如&,{,}和大量的HTML taging以及脚本标记。行间距刚好在窗口外面:)也许我可以用正则表达式来解决这个问题。但我想更专注于Html Agility Pack – Kevin

+0

除了清理不受欢迎的人的html之外,你无能为力。 InnerText包含您在文档中看到的不是该元素一部分的所有内容。因此,包括空格,脚本节点中的代码等。如果您的目标是让文本看起来像在Web浏览器中呈现,那么您不会以这种方式得到它。 –

+0

嗯,我明白你的意思。也许我已经对innertext和明文感到困惑。主要目标是取回带有主要文本内容的干净文本或解析的HTML。你能告诉我如何得到这个请。 – Kevin