HTML Agility Pack - 使用 Align=left 样式从 DIV 获取文本

Posted

技术标签:

【中文标题】HTML Agility Pack - 使用 Align=left 样式从 DIV 获取文本【英文标题】:HTML Agility Pack - Get Text From DIV with Align=left style 【发布时间】:2012-04-18 06:04:26 【问题描述】:

我想知道如何从 align=left 样式的 DIV 中获取文本?

到目前为止,这是我的 xpath 查询代码,我唯一的问题是在这里我不知道我的 xpath 查询是否正确。

我认为问题出在我的 xpath 查询的 [@align='left]' 代码中。

var nodes = doc.DocumentNode.SelectNodes("//div[@align='left']");

【问题讨论】:

看起来不错。有什么问题?有什么错误吗?例外?究竟是什么不工作? nodes 变量应该包含一个带有这些节点的节点集合。 我认为代码中的@align='left' 不正确..我没有得到 div 标签中的文本 您是如何访问每个选定节点的文本的?你没有那个代码。 我相信最近添加了属性值选择器......它们曾经不受支持。您使用的是哪个版本的 HAP? 我正在使用最新的 HAP 【参考方案1】:

htmlNode.SelectNodes 方法选择与传递的 xpath 表达式匹配的节点列表。您需要迭代这些节点并获取每个项目的InnerHtml(或InnerText),如下所示:

// check if nodes found
if (nodes != null)
    foreach (var div in nodes)
    
        var html = div.InneHtml;
    

【讨论】:

感谢您的回答,但我的代码中已经有了。我唯一的问题是在 xpath 查询中。 @user1307655,你的 xpath 看起来不错。我试了一下,它为我选择了 align 属性设置为 left 的 div。 确保检查null 结果。如果 HAP 找不到任何节点,则返回 null,而不是空集合:var nodes = (doc.DocumentNode.SelectNodes("//div[@align='left']") ?? new HtmlNodeCollection(null)); @jessehouwing,在我提供的代码 sn-p 中已经检查了null

以上是关于HTML Agility Pack - 使用 Align=left 样式从 DIV 获取文本的主要内容,如果未能解决你的问题,请参考以下文章

Html Agility Pack:查找评论节点

如何使用 HTML Agility Pack 修复格式错误的 HTML?

csharp Html Agility Pack #CSharp #HtmlParsing

使用 Html Agility Pack 从 HTML BODY 节点中提取内部文本

Html Agility Pack/C#:如何创建/替换标签?

HTML Agility Pack - 使用 Align=left 样式从 DIV 获取文本