Xpath 在 link 节点之间抓取单独的文本

Xpath grabbing separate text in between link nodes

我目前正在使用 HtmlAgilityPack 从 <a> 标签中检索文本:

foreach (HtmlNode node in html.DocumentNode.SelectNodes("//div[@class='acTrigger']/a"))
{
     lblTest1.Text = lblTest1.Text + ", " + node.InnerText.ToString();
}

Web 代码如下所示

<li>
    <div class="acTrigger">
        <a href="/16014988/d/" onclick="return queueRefinementAnalytics('Category','Battery')">
            Battery                                 <em>&nbsp;(1)</em>
        </a>
    </div>
</li>
<li>
    <div class="acTrigger">
        <a href="/15568540/d/" onclick="return queueRefinementAnalytics('Category','Brakes')">
            Brakes                                 <em>&nbsp;(2)</em>
        </a>
    </div>
</li>
<li>
    <div class="acTrigger">
        <a href="/11436914/d/1979-honda-ct90-cables-lines" onclick="return queueRefinementAnalytics('Category','Cables/Lines')">
            Cables/Lines                                 <em>&nbsp;(1)</em>
        </a>
    </div>
</li>

目前对我来说 return:Battery (1), Brakes (2), Cables/Lines (1) 这显然是所有内部文本。我想知道的是如何将这两位分开,以便我可以将它们分别存储在一个列表中供以后使用。大致如下:Battery, 1, Brakes, 2, Cables/Lines, 1 所以当它们被 return 发送给我时,我可以将它们扔进列表中。

<em> 标签之间的文本是 <a> 将您带到的页面上的结果数。我可以在获取文本行后解析整个字符串,但我觉得好像有一种方法可以使用 XPath 和 return 一次自动处理和存储一个片段。我是 XPath 的新手,几天来我一直在尝试自己解决这个问题,但无济于事。任何帮助将不胜感激。

将您的 XPath 表达式更改为 //div[@class='acTrigger']/a//text()[normalize-space()] 个单独的文本节点。