Html 민첩성 팩 - 올바른 스팬 클래스를 선택하는 방법

c# html-agility-pack

문제

나는 아마존 페이지에서 최저 가격을 찾고있다. 이 URL을 예제로 사용 해보자.

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

            }           
        }

나는 어떤 결과도 얻지 못하고있다. 내가 어디로 잘못 가고 있니?

수락 된 답변

당신은 id 가 subPrice 인 노드를 요구하고 있지만 사실 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를 갖는 노드를 결정해야합니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.