2012-04-10 1 views
3

아마존 페이지에서 최저 가격을 찾고 있습니다. 예로 들어,이 URL을 사용하자 : 나는 최저 가격 ... "에서 새로운"의 오른쪽에있는 숫자를 찾으려면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와 노드를 요구하고 있지만, subPrice을 가지고 사실 class에 있습니다

<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 –

+1

제안 사항 뒤에 .InnerText를 추가하면 "$ 5.00에서 2 신품"이 반환됩니다. 나는 거기에서 그것을 처리 할 수있다. 감사합니다 :) –

+0

하지만 하나의 결과를 반환 후 프로그램이 충돌합니다. 어쩌면이 문제를 해결할 수있는 적절한 스레드가 아니지만 foreach가 한 번 반복 된 후에 왜 죽을지 누가 ​​알 수 있습니까? –