本篇介绍XML 程序包中的函数,因函数较多,侧重于爬虫相关的函数
1.xmlTreeParse(),htmlTreeParse() #解析XML或HTML文件,或者包含XML/HTML内容的字符串,并生成标准的XML/HTML树形R结构,当内容已知为HTML时,使用后者(XMLDocumentContent:生成对象类型)
2.xmlParse(),htmlParse() #整理网页树结构,与xmlTreeParse和htmlTreeParse等价,区别在useInternalNodes=T即convert function使用的类是XMLInternalNode,而不是XMLNode,可使用xpathApply和getNodeSet函数
注:htmlParse函数可以抓取http页面,不能抓取https页面(当输入URL时)
3.getNodeSet(doc,path) #提取定位资源,必须是XPath表达式
xpathApply(doc,path,fun, ...)
xpathSApply(doc,path,fun=NULL, ...) #xpathSApply是xpathApply的一个版本,试图简化结果(如果能被转换成向量或矩阵,而不是列表)
4.xmlRoot() #获取根目录,针对XMLDocumentContent/XMLInternalDocument/HTMLDocument类,xmlTreeParse/htmlTreeParse/xmlParse/htmlParse函数生成的对象均可使用,顶级XML主体节点
5.xmlName() #节点名称,输入XMLnode对象(xmlRoot()函数生成对象处理而成)
xmlSize() #子节点个数,输入XMLnode对象(xmlRoot()函数生成对象处理而成)
xmlParent() #获取XMLInternalNode节点的父节点(xmlRoot()函数生成对象处理而成)
xmlChildren() #获取XMLInternalNode节点的子节点(xmlRoot()函数生成对象处理而成)
xmlAncestors() #从顶部起遍历父节点,相当于层层解析出子节点,返回list
getSibling(node,after=T) #向左向右的姐弟间的值,T-right,F-left
#举例
fileName <- system.file("exampleData", "test.xml", package="XML")
doc <- xmlTreeParse(fileName)
xmlName(xmlRoot(doc)[[1]])
tt = xmlRoot(doc)[[1]]
xmlName(tt)
xmlName(tt) <- "bob"
6.xmlAttrs() #返回命名的字符向量,给出XML Node对象属性的[标签-标签值]
xmlGetAttr(node,name) #XML Node对象属性name值
xmlValue(node) #提取XML Node对象属性所对应的值
7.readHTMLTable() #读取表格数据,输入是文件名/URL/HTMLInternalDocument(htmlParse()函数生成)/XMLInternalElementNode类型/包含和处理HTML内容的字符向量
8.xmlToDataFrame("input.xml")
将函数分成以上8类,便于理解