2017-03-03 50 views
2

我利用HtmlAgilityPack當前正在提取文本從內部<a>標籤:Xpath的抓單獨的文本鏈接中的節點之間

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非常陌生,並且一直試圖自己解決這個問題多次,但都無濟於事。任何幫助將不勝感激。

回答

2

將XPath表達式更改爲//div[@class='acTrigger']/a//text()[normalize-space()]單獨的文本節點。

+1

謝謝,這工作完美。我仍然在嘗試學習XPath語法,它有點奇怪。 –

相關問題