使用XML包在R中创建XPath

使用XML包在R中创建XPath,r,xpath,R,Xpath,我不熟悉XPath,但我可以看到它有多强大。我正在看这篇文章的源代码,只想从下面两个页面中提取内容和用户名,为了简单起见,这两个页面位于源代码顶部附近 content=“[Archive]Simburgur的现场直播 流式[离线]战争装备3“ Simburgur 这是我在R中的代码: doc <- htmlParse("http://forums.epicgames.com/archive/index.php/t-672775.html") xpathSApply(doc, "//hea

我不熟悉XPath,但我可以看到它有多强大。我正在看这篇文章的源代码,只想从下面两个页面中提取内容和用户名,为了简单起见,这两个页面位于源代码顶部附近

content=“[Archive]Simburgur的现场直播 流式[离线]战争装备3“

Simburgur
这是我在R中的代码:

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

doc你接近了。这应该可以做到

//head/meta[@name=\"description\"]/@content
括号限制了元标记的选择,但您仍然必须指定所需的属性。

使用

/*/head/meta[@name='description']/@content
string(/*/head/meta[@name='description']/@content)
这仍然会选择一个属性节点,但是在PL中可能有一种简单的方法来获取属性的字符串值

要仅获取字符串值,请使用

/*/head/meta[@name='description']/@content
string(/*/head/meta[@name='description']/@content)
注意:使用
/
缩写可能会导致XPath表达式的计算速度非常慢,因为它可能会导致整个(子)树的线性遍历


如果XML文档的结构是静态已知的,请始终避免使用
/

好问题,+1。请参阅我的答案,了解两个简短而有效的解决方案。:)