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