C # HTML 민첩성 팩 SelectSingleNode 및 SelectNodes XPath 구문

c# html-agility-pack web-scraping xpath

문제

내 질문은이 하나의 XmlNode.SelectSingleNode 구문을 C 노드에서 노드 내에서 검색하는 것과 매우 유사합니다 .

가격 / 조건 / 선박 가격을 끌어 오기 위해 HTML 민첩성 팩을 사용하려고합니다. 여기에 내가 고칠 URL이 있습니다. http://www.amazon.com/gp/offer-listing/0470108541/ref=dp_olp_used?ie = UTF8 & 조건 = 모두

다음은 내 코드 스 니펫입니다.


    string results = "";
    var w = new HtmlWeb();
    var doc = w.Load(url);
    var nodes = doc.DocumentNode.SelectNodes("//div[@class='a-row a-spacing-medium olpOffer']");

    if (nodes != null)
    {
         foreach (HtmlNode item in nodes)
         {
              var price = item.SelectSingleNode(".//span[@class='a-size-large a-color-price olpOfferPrice a-text-bold']").InnerText;
              var condition = item.SelectSingleNode(".//h3[@class='a-spacing-small olpCondition']").InnerText;
              var price_shipping = item.SelectSingleNode("//span[@class='olpShippingPrice']").InnerText;
              results += "price " + price + " condition " + condition + " ship " + price_shipping + "\r\n";
         }
    }
    return results;

어떤 조합이든간에. / 그리고. ./ 및 / etc ... 나는 내가 원했던 것을 얻을 수 없다. (지금 xpaths를 배우려고 노력하고있다.) 또한 이전에 언급했던 원래의 질문과 마찬가지로, 현재 첫 번째 항목을 반복해서 반환하고있다. 노드를 선택하는 방법 및 / 또는 노드로 간주되는 노드에 대한 근본적인 이해가 빠져 있다고 생각합니다.


최신 정보


좋아, 다른 책을 가리 키도록 URL을 변경했고 첫 번째 두 항목이 예상대로 작동합니다 ... 세 번째 항목 (price_shipping)을 ".//"로 변경하려고하면 전혀 정보가 가져 오지 않습니다. 뭐든지. 이것은 언젠가는 운송비조차도 없어서 그 기간이 생략되기 때문입니다. 어떻게해야합니까? 나는 price_shipping! = null 인 경우에 시도했다.


최신 정보


해결 됐어. 나는 그것이 null 일 때 문제를 일으키는 price_shipping에서 ".InnerText"를 제거했다 ... 그렇다면 널 검사를 한 다음 .InnerText를 사용하는 것이 안전했다.

인기 답변

해결 됐어. 나는 그것이 null 일 때 문제를 일으키는 price_shipping에서 ".InnerText"를 제거했다 ... 그렇다면 널 검사를 한 다음 .InnerText를 사용하는 것이 안전했다.




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