上文我們獲取到了整個(gè)html文檔,如何從中解析出我們需要的東西呢参淫?
解析html
我們這里使用htmlParse()函數(shù)來(lái)解析網(wǎng)頁(yè)蹋艺,使用前要先導(dǎo)入RCurl,XML包。
library("RCurl";)
library("XML";)
然后用上文的方法獲取到雪球首頁(yè)的文檔
xueqiu<-getURL("http://xueqiu.com";)
然后利用htmlParse()函數(shù)解析文檔
parse<-htmlParse(xueqiu,asText = TRUE, encoding ='utf-8')#解析網(wǎng)頁(yè)
這里要注意編碼為utf-8
然后利用getNodeset()函數(shù)獲取到相應(yīng)的節(jié)點(diǎn)集合
nodeset<-getNodeSet(doc = parse, path = "http://div[@class='title';]/h4")
這樣我們就抓到了今日話題的標(biāo)題黄刚,我們敲nodeset,顯示如下:
其中,path 的意思是選取類(lèi)名是title的div民效,然后在選取這些div下的h4標(biāo)簽憔维。還記得我前文提到的用路徑找到相應(yīng)的節(jié)點(diǎn)嗎,與php的xpath類(lèi)似畏邢,R的XPath可以很簡(jiǎn)單的解析xml文件业扒。其中的路徑規(guī)則如下 :
斜杠(/)作為路徑內(nèi)部的分割符
/ 表示選擇根節(jié)點(diǎn)
// 表示選擇任意位置的某個(gè)節(jié)點(diǎn)
@表示選擇某個(gè)屬性
* 表示匹配任何元素節(jié)點(diǎn)
@ 表示匹配任何屬性值
node() 表示匹配任何類(lèi)型的節(jié)點(diǎn)*