C#HTML Agility Pack SelectSingleNodeとSelectNodes XPathの構文

c# html-agility-pack web-scraping xpath

質問

私の質問は、C#のノード内で検索するこの1つのXmlNode.SelectSingleNode構文と非常に似ています

私は、HTML Agility Packを使用して価格/条件/出荷価格を引き出そうとしています...私が掻き集める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を学ぼうとしています)を得ることができません。また、先ほど参照した元々の質問と同じように、第1の項目を何度も何度も何度も何度も戻しています。私は、ノードの選択方法やノードと見なされる方法の根本的な理解が不足していると思います。


更新


OK、別の本を指すようにURLを変更しました。最初の2つのアイテムは期待どおりに機能しています... 3番目のアイテム(price_shipping)を ".//"に変更しようとすると絶対に情報が取得されません何から。これは、出荷価格さえもありませんし、その範囲が省略されることがあるためです。これをどうすれば処理できますか?私はprice_shipping!= nullなら試しました。


更新


解決済み。私はprice_shippingから ".InnerText"を削除し、nullだったときに問題を引き起こしました。その後、nullチェックを行いました。次に、.InnerTextを使用するのが安全でした。

人気のある回答

解決済み。私はprice_shippingから ".InnerText"を削除し、nullだったときに問題を引き起こしました。その後、nullチェックを行いました。次に、.InnerTextを使用するのが安全でした。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ