Pack从HTML抓取所有文本

Pack从HTML抓取所有文本

本文介绍了使用HTML Agility Pack从HTML抓取所有文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

输入

<html><body><p>foo <a href='http://www.example.com'>bar</a> baz</p></body></html>

输出

foo
bar
baz

我知道 htmldoc.DocumentNode.InnerText ,但是它会提供 foobarbaz -我想一次获取每个文本,而不是一次获取所有文本。

I know of htmldoc.DocumentNode.InnerText, but it will give foobarbaz - I want to get each text, not all at a time.

推荐答案

var root = doc.DocumentNode;
var sb = new StringBuilder();
foreach (var node in root.DescendantNodesAndSelf())
{
    if (!node.HasChildNodes)
    {
        string text = node.InnerText;
        if (!string.IsNullOrEmpty(text))
            sb.AppendLine(text.Trim());
    }
}

这可以满足您的需求,但我不确定如果这是最好的方法。也许您应该遍历DescendantNodesAndSelf之外的其他东西以获得最佳性能。

This does what you need, but I am not sure if this is the best way. Maybe you should iterate through something other than DescendantNodesAndSelf for optimal performance.

这篇关于使用HTML Agility Pack从HTML抓取所有文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 12:21