2012-04-10 3 views
3

Ich versuche, den niedrigsten Preis auf Amazon-Seiten zu finden. Lassen Sie sich diese URL als Beispiel:Html Agility Pack - wie richtige Span-Klasse wählen

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 

ich den niedrigsten Preis finden will ... die Zahl rechts von „Neues aus“.

Hier ist, was ich versucht habe:

 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);     
       } 

      }   
     } 

Ich bin kein Ergebnis bekommen. Wo gehe ich falsch?

Antwort

5

Sie fragen für Knoten mit einem id von subPrice, aber es ist in der Tat class die subPrice hat:

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

so,

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

sollten Sie bekommen, was Sie wollen. Die von Ihnen angegebene Beispielseite weist jedoch mehrere Knoten auf, die mit diesem Muster übereinstimmen. Sie möchten also mehrere Knoten auswählen und diese dann durchlaufen, um zu entscheiden, welche die niedrigste Priorität hat.

+0

Mit Ihrem Code gibt mir das: HtmlAgilityPack.HtmlNode –

+1

Ich habe .InnerText nach Ihrem Vorschlag hinzugefügt und es "2 neue von $ 5,00" zurückgegeben. Ich kann damit umgehen. Danke :) –

+0

aber Programm stürzt ab, nachdem ein Ergebnis zurückgegeben wurde. Vielleicht ist das nicht der richtige Thread, um dieses Problem zu lösen, aber weiß jemand, warum die Foreach nach einer Iteration sterben würde? –

Verwandte Themen