[笔记]基于R的网络抓取和文本挖掘——XPath

XPath:一种网页查询语言
XPath最准确的分类是一种特定域语言,其应用领域相对狭窄——专门用于从标记语言文档(类似于HTML或XML)选取信息的有用工具。

参考网站:http://www.r-datacollection.com/materials/ch-4-xpath/fortunes/fortunes.html
解析文件
> library(XML)
> parsed_doc<-htmlParse(file = "http://www.r-datacollection.com/materials/ch-4-xpath/fortunes/fortunes.html")
> print(parsed_doc)


Collected R wisdoms

Robert Gentleman

'What we have is nice, but we need something very different'

Source: Statistical Computing 2003, Reisensburg

Rolf Turner

'R is wonderful, but it cannot work magic'
answering a request for automatic generation of 'data from a known mean and 95% CI'

Source: R-help

The book homepage
xpathSApply():该函数首先返回XPath表达式的整个节点;其次,如果有必要,可以把一个提取函数作为参数传递给它,从而获取该节点的值、属性或属性值。
这两步也可以相互分开进行,用getNodeSet()来应用XPath,然后可以通过循环结构或apply()系列函数对得到的节点集进行后续处理并重构其中的信息。
> xpathSApply(doc = parsed_doc,path = "/html/body/div/p/i")
path表达式可以采用相对路径和绝对路径;也可以使用通配符
也可以使用管道符“|”指定多个路径;另一种方法是把XPath查询保存在一个向量里,把这个向量传递个xpathSApply()
节点关系
node1/relation::node2    利用节点间的关系找到某一节点的唯一特性
> xpathSApply(doc = parsed_doc,path = "//a/ancestor::div//i")
[[1]]
'R is wonderful, but it cannot work magic' 

XPath 轴

轴可定义相对于当前节点的节点集。

轴名称 结果
ancestor 选取当前节点的所有先辈(父、祖父等)。
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
attribute 选取当前节点的所有属性。
child 选取当前节点的所有子元素。
descendant 选取当前节点的所有后代元素(子、孙等)。
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following 选取文档中当前节点的结束标签之后的所有节点。
namespace 选取当前节点的所有命名空间节点。
parent 选取当前节点的父节点。
preceding 选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling 选取当前节点之前的所有同级节点。
self 选取当前节点。
参考网站:http://www.w3school.com.cn/xpath/xpath_axes.asp



你可能感兴趣的:(R)