Подтвердить что ты не робот

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.:)

4b9b3361

Ответ 1

Использование

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

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

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

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

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

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

Ответ 2

Ты близко. Это должно сделать это.

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

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