Я пытаюсь написать скребок для экрана для 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 = ####», который, похоже, зависит от пользовательских программ браузера. Если я в любом случае пытаюсь использовать это (помещая / cs = 0 в путь для неидентифицируемого браузера), это приводит к подгонке, настаивающей на том, что мое выражение не оценивается для набора узлов, но оставление их все еще оставляет проблему всех данных прошлых div [2] возвращается как NULL.