我是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的新手。 :)
答案 0 :(得分:9)
使用强>:
/*/head/meta[@name='description']/@content
这仍然会选择一个属性节点,但可能在PL中有一种简单的方法来获取属性的字符串值。
要获取字符串值,请使用:
string(/*/head/meta[@name='description']/@content)
请注意:使用//
缩写可能会导致对XPath表达式的评估速度非常慢,因为它可能导致整个(子)树的线性遍历。
如果XML文档的结构是静态知道的,请始终避免使用//
。
答案 1 :(得分:3)
你很亲密。这应该做到。
//head/meta[@name=\"description\"]/@content
括号限制了元标记的选择,但您仍然需要指定所需的属性。