上文我们获取到了整个html文档,如何从中解析出我们需要的东西呢?
解析html
我们这里使用htmlParse()函数来解析网页,使用前要先导入RCurl,XML包。
library("RCurl";)
library("XML";)
然后用上文的方法获取到雪球首页的文档
xueqiu<-getURL("http://xueqiu.com";)
然后利用htmlParse()函数解析文档
parse<-htmlParse(xueqiu,asText = TRUE, encoding ='utf-8')#解析网页
这里要注意编码为utf-8
然后利用getNodeset()函数获取到相应的节点集合
nodeset<-getNodeSet(doc = parse, path = "//div[@class='title';]/h4")
这样我们就抓到了今日话题的标题,我们敲nodeset,显示如下:
其中,path 的意思是选取类名是title的div,然后在选取这些div下的h4标签。还记得我前文提到的用路径找到相应的节点吗,与php的xpath类似,R的XPath可以很简单的解析xml文件。其中的路径规则如下 :
斜杠(/)作为路径内部的分割符
/ 表示选择根节点
// 表示选择任意位置的某个节点
@表示选择某个属性
* 表示匹配任何元素节点
@ 表示匹配任何属性值
node() 表示匹配任何类型的节点*