Bildschirm Scraping XPATH des HTML-Agility-Packs gibt keine Daten zurück

c# html-agility-pack screen-scraping web-scraping

Frage

Ich versuche, für Digikey einen Screen Scraper zu schreiben, der es unserem Unternehmen ermöglicht, den Preis, die Teileverfügbarkeit und den Produktaustausch genau zu verfolgen, wenn ein Teil nicht mehr produziert wird. Es scheint eine Diskrepanz zwischen der XPATH, die ich in Chrome Devtools sehe, und Firebug in Firefox und was mein C # Programm sieht.

Die Seite, die ich derzeit scrapping ist http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=296-12602-1-ND

Der Code, den ich gerade benutze, ist ziemlich schnell und dreckig ...

   //This function retrieves data from the digikey
   private static List<string> ExtractProductInfo(HtmlDocument doc)
   {
       List<HtmlNode> m_unparsedProductInfoNodes = new List<HtmlNode>();
       List<string> m_unparsedProductInfo = new List<string>();

       //Base Node for part info
       string m_baseNode = @"//html[1]/body[1]/div[2]";

       //Write part info to list
       m_unparsedProductInfoNodes.Add(doc.DocumentNode.SelectSingleNode(m_baseNode + @"/table[1]/tr[1]/td[1]/table[1]/tr[1]/td[1]"));
       //More lines of similar form will go here for more info
       //this retrieves digikey PN

       foreach(HtmlNode node in m_unparsedProductInfoNodes)
       {
           m_unparsedProductInfo.Add(node.InnerText);
       }

       return m_unparsedProductInfo;
   }

Obwohl der Pfad, den ich verwende, korrekt zu sein scheint, bekomme ich immer NULL, wenn ich mir die Liste "m_unparsedProductInfoNodes" anschaue

Irgendeine Idee, was hier vor sich geht? Ich füge auch hinzu, dass wenn ich einen "SelectNodes" auf dem BaseNode mache, es nur ein div mit dem einzigen signifikanten Kind zurückgibt, das "cs = ####" ist, das mit Browser User Agents zu variieren scheint. Wenn ich versuche, dies trotzdem zu verwenden (putting / cs = 0 im Pfad für den nicht identifizierbaren Browser), wird eine Anpassung vorgenommen, die darauf besteht, dass mein Ausdruck nicht zu einem Knotensatz ausgewertet wird div [2] wird als NULL zurückgegeben.

Beliebte Antwort

Nur für ein Update:

Ich wechselte von c # in ein bisschen freundlicher Python (meine Erfahrung mit der Programmierung ist asm, c und python, das ganze OO-Ding war völlig neu) und schaffte es, meine XPath-Probleme zu korrigieren. Das Etikett war in der Tat das Problem, aber zum Glück ist es einzigartig, also ein wenig regulärer Ausdruck und eine entfernte Linie und ich war in guter Form. Ich bin mir nicht sicher, warum solch ein Tag den XPATH bricht. Wenn jemand Einblick hat, würde ich es gerne hören.



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