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

时间:2017-03-03 16:29:19

标签: c# html asp.net xpath html-agility-pack

我目前正在使用HtmlAgilityPack从<a>个代码中检索文字:

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

,网页代码如下所示

<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>

目前它正在向我回复:Battery (1), Brakes (2), Cables/Lines (1)这显然是所有内部文本。我想知道的是如何将两个位分开,以便我可以将它们存储在一个列表中供以后使用。有点像Battery, 1, Brakes, 2, Cables/Lines, 1这样的东西,所以当它们归还给我时,我可以将它们扔进列表中。

<em>代码之间的文字是<a>带您前往的页面上的结果数。我可以在获取文本行之后解析整个字符串,但我觉得有一种方法可以自动使用XPath执行此操作并一次返回一个片段以供我处理和存储。我是XPath的新手,并且一直试图解决这个问题多天,但没有用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

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