Нужна помощь с XPATH для src значения конкретного тега HTML img - PullRequest
3 голосов
/ 11 апреля 2011

Я немного новичок в XPATH и понимаю большинство основ, но у меня возникли некоторые проблемы с конкретным запросом.

Я пытаюсь проанализировать страницу Motley Fool и вернуть источник изображения длякапитальные баллы акций.

Например: если вы посмотрите на источник для страницы: http://caps.fool.com/Ticker/SLT.aspx Я хочу источник для http://g.foolcdn.com/art/ratings/stars/trans/5stars-trans-lg.png

Я хочу только то, чтоследует src =, если это возможно.

В настоящее время я работаю с:

xpath = "//div[@class='subtle marginT']"

Это, однако, ничего не возвращает.Я знаю, что это может требовать много, но если вы хотите ответить, я также был бы очень признателен за быстрое обоснование ответа, поскольку я хочу изучить XCAP, а не просто заставить этот запрос работать.

Ответы [ 3 ]

6 голосов
/ 11 апреля 2011

Исходя из вашего URL, это сработало для меня:

var imageNode = doc.DocumentNode.SelectSingleNode("//table[@id='tickerStats']/tbody/tr/td/img");
string imageText = imageNode.Attributes["src"].Value;

По сути, просто захватывает ближайший элемент с идентификатором, а затем идет по дереву туда, где вы хотите быть.

В качестве альтернативы это тоже сработало бы и выглядит немного чище (поскольку на самом деле вам не важна структура DOM в самой таблице, если есть только одно изображение):

var statsNode = doc.DocumentNode.SelectSingleNode("//table[@id='tickerStats']");
var imageNode = statsNode.SelectSingleNode(".//img");
string imageText = imageNode.Attributes["src"].Value;
2 голосов
/ 11 апреля 2011

Используйте

//table[@id='tickerStats']/tbody/tr/td/img/@src

Выбирает любой атрибут с именем src любого элемента с именем img, который является потомком td, который является потомком tr, который является потомком tbody, который является потомком любой table в документе, который имеет атрибут id со значением 'tickerStats'.

Если вам нужно только строковое значение этого атрибута (при условии, что вышеприведенное выражение XPath выбирает один узел атрибута), используйте:

string(//table[@id='tickerStats']/tbody/tr/td/img/@src)
1 голос
/ 11 апреля 2011

Здесь есть бесплатный инструмент http://www.bubasoft.net/ под названием XPath Builder, который поможет вам быстро разобраться в XPath.

...