Извлечение внутреннего текста из узла HTML BODY с помощью Html Agility Pack - PullRequest
10 голосов
/ 28 июля 2011

Нужна помощь с HTML Agility Pack!

В основном я хочу получить обычный текст внутри узла тела 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

Но все равно не повезло!

Любой совет ???

Ответы [ 2 ]

17 голосов
/ 28 июля 2011

Как насчет:

Return htmldoc.DocumentNode.SelectSingleNode("//body").InnerText
0 голосов
/ 18 декабря 2018

Решение Джеффа в порядке, если у вас нет таблиц, потому что текст, расположенный в таблице, торчит, как cell1cell2cell3. Чтобы предотвратить эту проблему, используйте этот код (пример C #):

var words = doc.DocumentNode?.SelectNodes("//body//text()")?.Select(x => x.InnerText);
return words != null ? string.Join(" ", words) : String.Empty;
...