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?
csharp Html Agility Pack #CSharp #HtmlParsing
使用 Html Agility Pack 从 HTML BODY 节点中提取内部文本