如何使用 HTMLAgilityPack 抓取标签前的文本

本文关键字:文本 标签 抓取 何使用 HTMLAgilityPack | 更新日期: 2023-09-27 18:32:22

假设我有这个HTML字符串:

<a href="hello">These are some links</a><br>1234 - <a id="1234" href="#">My Number 1</a><br>4321 - <a href="#">My Number 2</a>...

我想提取 <br> 标签 (1234 -)、<a> 标签的内部文本 (My Number 1) 以及 <a> 标签 (1234) 的 id 属性。我正在使用 HTMLAgilityPack 来帮助解析我获得的 HTML 数据。

到目前为止,我已经尝试这样做:

        // mNodes = code to get html string I want to parse
        HtmlNode mNumberListNodes = mNodes[1];   // mNodes[1] is equal to a string as shown above
        List<HtmlNode> mNumberNodes = mNumberListNodes.Descendants("a").ToList();

我正在使用调试点来停止并查看每个 HtmlNode 中的先前子节点,但我找不到相应的数字文本。

有人有任何在C#中使用HTMLAgilityPack的经验可以帮助我吗?

如何使用 HTMLAgilityPack 抓取标签前的文本

我相信

mNodes.InnerText

属性将为您提供所有不在 HTML 标签中的文本,特别是您想要的"1234"。文本本身不是 DOM 中的节点。

假设上面的代码是正确的,要获取 id 值,请使用:

mNumberListNodes.Descendants("a").ToList()[0].Attributes["id"].Value

我在这个库和正则表达式中使用 XPath 取得了很好的成功。