не работает HtmlAgilityPack по Xpath
От: dimawork1989  
Дата: 19.01.14 17:41
Оценка:
В общем есть сайт к примеру http://antikey.moy.su/news/rozy_sokolov_n_i_1991/2014-01-19-6158
в хроме достал Xpath к телу новости //*[@id="mainTable"]/tbody/tr[2]/td[2]/table/tbody/tr/td/table[1]/tbody/tr[2]/td
удалил все /tbody как нужно получил следующий путь //*[@id="mainTable"]/tr[2]/td[2]/table/tr/td/table[1]/tr[2]/td

написал код:


string textFind = "//*[@id="mainTable"]/tr[2]/td[2]/table/tr/td/table[1]/tr[2]/td";

HtmlDocument doc = new HtmlDocument();                                              // Создаём документ для парсинга содержимого новости
doc.LoadHtml(InText);

HtmlNodeCollection n1;
 try { n1 = doc.DocumentNode.SelectNodes(textFind); }                     // Парсим нужный элемент по указанному адресу
catch (Exception) { return; }

HtmlNode hrefValueFind;
try { hrefValueFind = doc.DocumentNode.SelectSingleNode(textFind); }                // Парсим нужный элемент по указанному адресу
catch (Exception) { return; }


Ни один из способов не работает, не подскажите может хром даёт не верный Xpath для библиотеки HtmlAgilityPack, может его ещё как-нить изменить нужно

заранее спасибо
Re: не работает HtmlAgilityPack по Xpath
От: andrey82  
Дата: 22.01.14 06:26
Оценка:
Здравствуйте, dimawork1989, Вы писали:

D> получил следующий путь //*[@id="mainTable"]/tr[2]/td[2]/table/tr/td/table[1]/tr[2]/td

D>написал код:

На всякий случай, в InText что содержится? Есть ли там реально такой путь? Т.е. вопрос в том, что вероятно DOM, показанный в Chrome — был как-то изменен скриптами, а в InText находится просто содержимое html документа.

D>Ни один из способов не работает, не подскажите может хром даёт не верный Xpath для библиотеки HtmlAgilityPack, может его ещё как-нить изменить нужно
Re: не работает HtmlAgilityPack по Xpath
От: BrainSlug Израиль  
Дата: 23.01.14 13:35
Оценка:
D>Ни один из способов не работает, не подскажите может хром даёт не верный Xpath для библиотеки HtmlAgilityPack, может его ещё как-нить изменить нужно
хром дает абсолютный путь. который естественно от страницы к странице может отличаться. я рекомендую получать содержимое элемента по id, в данном случае это html таблица и парсить ее уже(а каким образом, а каким удобнее всего, если не изменяет память, там даже linq есть в HtmlAgilityPack).
.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.