Скрывающий экран экрана Agility Pack XPATH не возвращает данные

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

Вопрос

Я пытаюсь написать экранный скребок для Digikey, который позволит нашей компании точно отслеживать цены, доступность деталей и замену продуктов, когда часть будет прекращена. Кажется, существует расхождение между XPATH, которое я вижу в Chrome Devtools, а также Firebug на Firefox и что видит моя программа на 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;
   }

Хотя путь, который я использую, кажется «правильным», я продолжаю получать NULL, когда смотрю на список «m_unparsedProductInfoNodes»

Любая идея, что здесь происходит? Я также добавлю, что если я делаю «SelectNodes» в baseNode, он возвращает только div с единственным значимым дочерним элементом, который является «cs = ####», который, как представляется, зависит от пользовательских агентов браузера. Если я попытаюсь использовать это в любом случае (put / cs = 0 в пути для неидентифицируемого браузера), он устанавливает соответствие, настаивая на том, что мое выражение не оценивает набор узлов, но оставляя их по-прежнему оставляя проблему всех прошлых данных div [2] возвращается как NULL.

Популярные ответы

Только для обновления:

Я переключился с c # на более дружественный Python (мой опыт программирования - asm, c и python, вся OO была совершенно новой) и удалось исправить мои проблемы с xpath. Тег действительно был проблемой, но, к счастью, он уникален, поэтому небольшое регулярное выражение и удаленная строка, и я был в хорошей форме. Я не уверен, почему тег вроде этого разбивает XPATH. Если у кого-то есть понимание, я бы хотел это услышать.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow