使用XML包在R中的XPath

时间:2011-02-02 02:28:30

标签: r xpath

我是XPath的新手,但我可以看到它有多强大。我正在查看这个link的源代码,只是想从以下两个页面中提取内容和用户名,为简单起见,它们位于源代码的顶部附近。

  

content =“[存档] Simburgur的直播   流[离线]战争机器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 个答案:

答案 0 :(得分:9)

使用

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

这仍然会选择一个属性节点,但可能在PL中有一种简单的方法来获取属性的字符串值。

要获取字符串值,请使用

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

请注意:使用//缩写可能会导致对XPath表达式的评估速度非常慢,因为它可能导致整个(子)树的线性遍历。

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

答案 1 :(得分:3)

你很亲密。这应该做到。

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

括号限制了元标记的选择,但您仍然需要指定所需的属性。