Получение вложенных Div с помощью HTML Agility Pack C#
Я пытаюсь почистить веб-страницу (Pub Med), чтобы увидеть, сколько ссылок появляется в конкретных статьях (некоторые статьи имеют ссылки, некоторые нет). Однако проблема, с которой я столкнулся сейчас, заключается в том, что все div-ы вложены и имеют одно и то же имя, поэтому я не смог выяснить, какой код требуется для получения элементов.
До сих пор я пытался использовать содержимое, чтобы посмотреть, смогу ли я просто поймать улов всех и откопать свой путь в узел оттуда, но это не сработало.
.SelectNodes("//div[contains(@class,'portlet_title')]");
Я также попытался скопировать XPath, но все, что я получил бы, является нулем в результате
.SelectNodes("//*[@id="disc_col"]/div[3]/div[1]/div/h3/span");
Буду признателен за любую помощь, так как я не мастер в Xpath.
И для справки, страница, которая соответствовала бы моим критериям: http://www.ncbi.nlm.nih.gov/pubmed/?term=23489346 (с правой стороны написано "Цитируется * статьями)".
Я также просмотрел некоторые другие ответы, однако все они, казалось, были для результатов с по-разному названными Divs (то есть получить все идентификаторы div на html-странице, используя Html Agility Pack). Либо я не понимаю, как правильно это использовать, либо моя проблема в другом.
Еще раз спасибо.
1 ответ
Майк! Попробуй использовать
var titles = website.DocumentNode.SelectNodes("//div[@class='portlet_title']");
Ошибки в ваших XPath-файлах: 1. атрибуты пишутся только в "[]" с символом "@", как я написал; 2. в каждом узле XPath вы должны написать индекс, например, "// div [3] / div [1] / div[1]/ h3[1]/ span[1]".
Удачи!