C # HTML Agility Pack SelectSingleNode und SelectNodes XPath-Syntax

c# html-agility-pack web-scraping xpath

Frage

Meine Frage ist dieser XmlNode.SelectSingleNode-Syntax sehr ähnlich, um innerhalb eines Knotens in C # zu suchen.

Ich versuche, HTML Agility Pack zu verwenden, um Preis / Zustand / Versandpreis zu ziehen ... Hier ist die URL, die ich kratze: http://www.amazon.com/gp/offer-listing/0470108541/ref=dp_olp_used?ie = UTF8 & Bedingung = alle

Hier ist ein Ausschnitt meines Codes:


    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;

Egal welche Kombination ich versuche .// und. und ./ und / etc ... Ich kann nicht bekommen, was ich will (gerade jetzt versuche ich XPaths zu lernen), auch momentan gibt es nur den ersten Punkt wieder und wieder und wieder, genau wie die ursprüngliche Frage, auf die ich vorher Bezug genommen habe. Ich denke, ich vermisse ein grundlegendes Verständnis davon, wie die Auswahl von Knoten funktioniert und / oder was als Knoten betrachtet wird.


AKTUALISIEREN


Ok, ich habe die URL geändert, um auf ein anderes Buch zu zeigen und die ersten beiden Artikel funktionieren wie erwartet ... Wenn ich versuche, den dritten Artikel (price_shipping) in ein ".//" zu ändern, wird absolut keine Information gezogen von allem. Das muss daran liegen, dass irgendwann nicht einmal ein Versandpreis vorliegt und diese Spanne entfällt. Wie gehe ich damit um? Ich habe versucht, wenn price_shipping! = Null.


AKTUALISIEREN


Gelöst. Ich entfernte den ".InnerText" von der price_shipping, der Probleme verursachte, als es null war ... dann tat ich die Nullkontrolle und dann war es sicher, .InnerText zu benutzen.

Beliebte Antwort

Gelöst. Ich entfernte den ".InnerText" von der price_shipping, der Probleme verursachte, als es null war ... dann tat ich die Nullkontrolle und dann war es sicher, .InnerText zu benutzen.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum