HTML Agility Pack屏幕刮擦XPATH不返回數據

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

我正在嘗試為Digikey編寫一個屏幕刮刀,這樣我們公司就可以在零件停產時準確跟踪定價,零件供應和產品更換。我在Chrome Devtools中看到的XPATH與Firefox上的Firebug以及我的C#程序看到的似乎存在差異。

我正在抓的頁面是http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=296-12602-1-ND

我目前使用的代碼非常快速而且很髒......

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

雖然我正在使用的路徑似乎是“正確的”,但當我查看列表“m_unparsedProductInfoNodes”時,我仍然保持NULL

知道這裡發生了什麼嗎?我還要補充一點,如果我在baseNode上執行“SelectNodes”,它只會返回一個div,其唯一的重要子節點是“cs = ####”,這似乎與瀏覽器用戶代理有所不同。如果我嘗試無論如何都使用它(在無法識別的瀏覽器的路徑中放置/ cs = 0),它會保證我的表達式不會評估到節點集,但是留下它們仍然會留下所有數據的問題div [2]返回NULL。

熱門答案

只是為了更新:

我從c#切換到更友好的Python(我的編程經驗是asm,c和python,整個OO都是全新的)並設法糾正我的xpath問題。標籤確實是問題,但幸運的是它是獨一無二的,所以有點正規表達和刪除線,我的狀態很好。我不確定為什麼這樣的標籤打破了XPATH。如果有人有一些見解,我想听聽。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因