XPath внутри R с использованием пакета XML
Я новичок в XPath, но могу видеть, насколько он силен. Я смотрю исходный код этой и просто хочу извлечь содержимое и имя пользователя из следующих двух частей страницы, что для простоты саке расположены в верхней части исходного кода.
content = "[Архив] Simburgur Live 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 Live Stream [Offline] Gears of War 3" />
Очевидно, что в этом примере все, что я хочу, это то, что находится внутри кавычек content =, но я застрял и не могу заставить мое выражение возвращать нужную строку.
Повторяю. Я новичок в XPath.:)
Ответы
Ответ 1
Использование
/*/head/meta[@name='description']/@content
Это по-прежнему выбирает атрибут node, но, вероятно, в вашем PL есть простой способ получить строковое значение атрибута.
Чтобы получить только строковое значение, используйте:
string(/*/head/meta[@name='description']/@content)
Обратите внимание. Использование аббревиатуры //
может привести к очень медленной оценке выражения XPath, поскольку это может привести к линейному обходу целого (вспомогательного) дерева.
Всегда избегайте использования //
, если структура документа XML статически известна.
Ответ 2
Ты близко. Это должно сделать это.
//head/meta[@name=\"description\"]/@content
Скобки ограничивают выбор метатегов, но вам все равно нужно указать нужный атрибут.