XPath в R с использованием пакета XML - PullRequest
10 голосов
/ 02 февраля 2011

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

content = "[Архив] Симбургур в прямом эфире Stream [Offline] Gears of War 3 "

<div class="username">Simburgur</div>

Вот мой код в R:

doc <- htmlParse("http://forums.epicgames.com/archive/index.php/t-672775.html")
xpathSApply(doc, "//head/meta[@name=\"description\"]")

, который возвращает

[[1]]
<meta name="description" content="[Archive]  Simburgur's Live Stream [Offline] Gears of War 3" /> 

Очевидно, что в этом примере все, что мне нужно, - это то, что находится внутри кавычек содержимого =, но я застрял и не могу заставить мое выражение вернуть нужную мне строку.

Я повторяю. Я новичок в XPath. :)

Ответы [ 2 ]

9 голосов
/ 02 февраля 2011

Используйте

/*/head/meta[@name='description']/@content

При этом все равно выбирается узел атрибута , но, вероятно, в вашем PL есть простой способ получить строковое значение атрибута.

Чтобы получить только строковое значение, используйте :

string(/*/head/meta[@name='description']/@content)

Обратите внимание : Использование сокращения // может привести к очень медленной оценке выражения XPath, поскольку это может вызвать линейный обход целого (под) дерева.

Всегда избегайте использования //, если структура документа XML статически известна.

3 голосов
/ 02 февраля 2011

Ты рядом.Это должно сделать это.

//head/meta[@name=\"description\"]/@content

Скобки ограничивают выбор мета-тегов, но вам все равно нужно указать нужный атрибут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...