HTML Agility Pack Screen Scraping XPATH non sta restituendo dati

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

Domanda

Sto tentando di scrivere uno screen scraper per Digikey che consentirà alla nostra azienda di tenere traccia accurata dei prezzi, della disponibilità delle parti e delle sostituzioni dei prodotti quando una parte viene interrotta. Sembra che ci sia una discrepanza tra XPATH che sto vedendo in Chrome Devtools, Firebug su Firefox e il mio programma C #.

La pagina che sto cercando attualmente è http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=296-12602-1-ND

Il codice che sto usando è piuttosto veloce e sporco ...

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

Anche se il percorso che sto utilizzando sembra essere "corretto" continuo a ottenere NULL quando guardo la lista "m_unparsedProductInfoNodes"

Qualche idea su cosa sta succedendo qui? Aggiungerò anche che se faccio un "SelectNodes" sul BaseNode restituisce solo un div con l'unico figlio significativo "cs = ####" che sembra variare con i programmi utente del browser. Se provo a usare questo in ogni caso (mettendo / cs = 0 nel percorso per il browser non identificabile), esso lancia un attacco insistendo sul fatto che la mia espressione non valuta un insieme di nodi, ma lasciandoli lascia ancora il problema di tutti i dati passati div [2] viene restituito come NULL.

Risposta popolare

Solo per un aggiornamento:

Sono passato da c # a Python un po 'più amichevole (la mia esperienza con la programmazione è asm, c, e python, l'intera cosa OO era completamente nuova) e sono riuscito a correggere i miei problemi con xpath. Il tag era davvero il problema, ma per fortuna è unico, quindi un po 'di espressione regolare e una linea rimossa e io ero in buona forma. Non sono sicuro del perché un tag come quello rompa l'XPATH. Se qualcuno ha qualche intuizione mi piacerebbe sentirlo.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché