HTML Agility Pack Le grattage d'écran XPATH ne renvoie pas de données

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

Question

J'essaie d'écrire un grattoir d'écran pour Digikey qui permettra à notre société de garder une trace précise des prix, de la disponibilité des pièces et du remplacement des produits lorsqu'une pièce est abandonnée. Il semble y avoir un écart entre le XPATH que je vois dans Chrome Devtools et Firebug sur Firefox et ce que voit mon programme C #.

La page que je suis en train de parcourir est actuellement http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=296-12602-1-ND

Le code que j'utilise actuellement est assez rapide et sale ...

   //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;
   }

Bien que le chemin que j'utilise semble être "correct", je continue à obtenir NULL lorsque je regarde la liste "m_unparsedProductInfoNodes"

Une idée de ce qui se passe ici? J'ajouterai également que si je fais un "SelectNodes" sur le baseNode, il ne renvoie qu'un div dont le seul enfant significatif est "cs = ####", ce qui semble varier avec les agents d'utilisateur du navigateur. Si j’essaie de l’utiliser de toute façon (en mettant / cs = 0 dans le chemin du navigateur non identifiable), cela donne un ajustement insistant pour que mon expression n’évalue pas un ensemble de nœuds, mais les laisse toujours en suspens. div [2] est retourné comme NULL.

Réponse populaire

Juste pour une mise à jour:

Je suis passé de c # à un peu plus convivial en Python (mon expérience en programmation est asm, c et python, le tout en OO était totalement nouveau) et j'ai réussi à corriger mes problèmes avec xpath. Le tag était en effet le problème, mais heureusement, il est unique, donc une petite expression régulière et une ligne supprimée et j'étais en pleine forme. Je ne suis pas sûr de savoir pourquoi une étiquette comme celle-ci casse l'XPATH. Si quelqu'un a un aperçu, j'aimerais l'entendre.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi