我目前正在使用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> (1)</em>
</a>
</div>
</li>
<li>
<div class="acTrigger">
<a href="/15568540/d/" onclick="return queueRefinementAnalytics('Category','Brakes')">
Brakes <em> (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> (1)</em>
</a>
</div>
</li>
目前它正在向我回复:Battery (1), Brakes (2), Cables/Lines (1)
这显然是所有内部文本。我想知道的是如何将两个位分开,以便我可以将它们存储在一个列表中供以后使用。有点像Battery, 1, Brakes, 2, Cables/Lines, 1
这样的东西,所以当它们归还给我时,我可以将它们扔进列表中。
<em>
代码之间的文字是<a>
带您前往的页面上的结果数。我可以在获取文本行之后解析整个字符串,但我觉得有一种方法可以自动使用XPath执行此操作并一次返回一个片段以供我处理和存储。我是XPath的新手,并且一直试图解决这个问题多天,但没有用。任何帮助将不胜感激。
答案 0 :(得分:2)
将XPath表达式更改为//div[@class='acTrigger']/a//text()[normalize-space()]
个单独的文本节点。