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> (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>
目前对我来说 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()]
个单独的文本节点。
我目前正在使用 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> (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>
目前对我来说 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()]
个单独的文本节点。