语境:
我正在解析此服务的查询结果,但结果的 HTML 是一团糟。
我的目标是构建一个“KeyValue”对,其中每个“属性和值”都显示为该查询的结果。
目前只有一种方法出现在我的脑海中来解决它。
解析逻辑:
- 选择所有属性节点
- 选择所有值节点
- 在构建键值对的每个集合上匹配它们的“索引”
例如:属性 [0] 和值 [0] ->(在此服务中,这将是“CNPJ”和“12.272.084/0001-00”)。
问题:
即使我设法找到一个 XPath 表达式来获取所有属性节点:
attrNodes = htmlDoc.DocumentNode.SelectNodes ("//td[@bgcolor='#f1f1b1']/*/font[@face='Verdana']");
我也无法为值节点找到一个,因为有不同类型的节点在由 Html 呈现时实际上看起来相同(例如“b”和“strong”)。
甚至有不同层次结构的节点阻止我在 XPath 上使用通配符(“*”)来解决它(例如,单个标签或嵌套的两个标签)
我的目标:
- 编写 XPath 以使用值到达每个不同的节点子集
- 将所有节点放在一个集合中
- 根据每个节点在 Html 中的位置对该集合的节点进行排序(在 HTML 中首先出现的节点将位于列表的开头)
知道如何实现我的目标吗?
HTML 示例:
你可以在这里检查一下
或通过在 CNPJ 文本框中键入: 12272084000100 并单击“Pesquisar”来查询自己的服务。之后,您只需单击文本“Companhia Eletrica de Alagoas”
提前致谢