SelectSingleNode- und SelectNodes-XPath-Syntax
Posted: 25 Jan 2025, 14:06
Meine Frage ist diesem einen XMLNode sehr ähnlich. Zustand/Schiffspreis ... Hier ist die URL, die ich kratze: http://www.amazon.com/gp/offer-listing/ ... dition=all
Egal welche Kombination ich versuche .// und. und ./ und / usw ... Ich kann nicht bekommen, was ich will (gerade jetzt versuche, xPaths zu lernen), auch wie die ursprüngliche Frage, auf die ich mich zuvor verwiesen habe. Ich denke, mir fehlt ein grundlegendes Verständnis dafür, wie die Auswahl von Knoten funktioniert und /oder was als Knoten angesehen wird. Update < /p>
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.
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.