2012-04-10 52 views
3

我正試圖在亞馬遜網頁上找到最低價格。讓我們以這個網址爲例:Html敏捷包 - 如何選擇正確的跨度類

http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=9963BB#/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=E999-4701&rh=i%3Aaps%2Ck%3AE999-4701 

我想找到最低的價格......「新的來源」右邊的數字。

這是我曾嘗試:

 using (TextWriter tw = new StreamWriter(@"D:\AmazonUrls.txt")) 
     { 
      foreach (string item in list) 
      { 
       var webGet = new HtmlWeb(); 
       var document = webGet.Load(item); 
       var lowestPrice = document.DocumentNode.SelectSingleNode("//span[@id='subPrice']"); 
       if (lowestPrice != null) 
       { 
        Console.WriteLine(lowestPrice);     
       } 

      }   
     } 

我沒有得到任何結果。我哪裏錯了?

回答

5

您所要求的與subPrice的id節點,但它其實是在class有subPrice:

<span class="subPrice"> 
     <a href="http://rads.stackoverflow.com/amzn/click/B001BA0W06">5 new</a> 
    from <span class="price">$245.90</span></span> 

所以,

var lowestPrice = document.DocumentNode.SelectSingleNode("//span[@class='subPrice']"); 

應該得到你想要的東西。但是,您給出的示例頁面有幾個匹配該模式的節點,因此您需要選擇多個節點,然後循環遍歷它們以決定哪個節點具有最低的privce。

+0

使用你的代碼給了我這個: HtmlAgilityPack.HtmlNode – 2012-04-10 21:07:32

+1

我在你的建議後添加了.InnerText,它返回「2新5.00美元」。我可以從那裏處理它。謝謝:) – 2012-04-10 21:39:04

+0

但程序在返回一個結果後崩潰。也許這不是解決這個問題的正確線索,但是有誰知道爲什麼foreach會在一次迭代後死亡? – 2012-04-10 22:09:32