Code: Select all
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;
OK, ich habe die URL geändert, um auf ein anderes Buch zu verweisen, und die ersten beiden Elemente funktionieren als Erwartet ... wenn ich versuche, den dritten Artikel (Price_Shipping) in eine ".//" zu ändern. Dies muss irgendwann zurückzuführen sein, dass es nicht einmal einen Versandpreis gibt und diese Spanne weggelassen wird. Wie gehe ich damit um? Ich habe es versucht, wenn price_shipping! = Null. />
gelöst. Ich habe das ".inNertext" aus dem Preis entfernt, der Probleme verursachte, als es Null war ... dann habe ich den Null -Check durchgeführt und dann war es sicher, .Innertext.