一、從URL讀取並返回html樹 1.1 Rcurl包 使用Rcurl包可以方便的向伺服器發出請求,捕獲URI,get 和 post 表單。比R socktet連接要提供更高水平的交互,並且支持 FTP/FTPS/TFTP,SSL/HTTPS,telnet 和cookies等。本文用到的函數是bas ...
一、從URL讀取並返回html樹
1.1 Rcurl包
使用Rcurl包可以方便的向伺服器發出請求,捕獲URI,get 和 post 表單。比R socktet連接要提供更高水平的交互,並且支持 FTP/FTPS/TFTP,SSL/HTTPS,telnet 和cookies等。本文用到的函數是basicTextGatherer和getURL。想詳細瞭解這個包的可以點擊參考資料的鏈接。
R命令:
h <- basicTextGatherer( ) # 查看伺服器返回的頭信息
txt <- getURL(url, headerfunction = h$update,.encoding="UTF-8...") # 返回字元串形式html
參數url即為需要訪問的url這裡參數用headerfunction用到上一條命令返回的頭信息,.encoding指定網頁的編碼方式為“UTF-8"。
網頁的編碼方式有很多,一般採用UTF-8,一些中文網頁編碼方式為“gbk",可以在瀏覽器的網頁代碼查看或者getURL返回的字元串看到。
小木蟲網頁代碼查看
可見小木蟲網頁編碼方式為gbk。
1.2 XML包
R語言XML包 具有讀取或者創建XML(HTML)文件的功能,可以本地文件也支持HTTP 或者 FTP ,也提供Xpath(XML路徑語言)解析方法。此處函數htmlparse,將文件解析為XML或者HTML樹,便於進一步數據的提取或者編輯。
R命令:
htmlParse(file,asText=T,encoding="UTF-8"...) #參數file 即為XML或者HTML文件名或者text,asText參數是T指定file是text,encoding指定網頁編碼方式。
這裡我們需要讀取網頁,並且拿到該網頁的html樹內容
自定義函數download,輸入strURL,strURL為網址,返回html樹內容
download <- function(strURL){
h <- basicTextGatherer( )# 查看伺服器返回的頭信息
txt <- getURL(strURL, headerfunction = h$update,.encoding="gbk") ## 字元串形式
htmlParse(txt,asText=T,encoding="gbk") #選擇gbk進行網頁的解析
}
二、獲得一個網頁所有的URL
有時候我們需要進入每個網頁上的子鏈接取分析數據,這個時候可以用到XML包的getHTMLLinks函數。
R命令:
getHTMLLinks(doc, xpQuery = "//a/@href"...) #doc為解析後的HTML樹文件,xpQuery指定想匹配的Xpath元素(下麵會詳細講一點Xpath基礎)。
此處我們需要獲得小木蟲“導師招生”頁面下的所有話題鏈接。
2.1 首先我們要獲得導師招生的第一頁,第二頁,第三頁,甚至到最後一頁的網址。
導師招生首頁
導師招生第二頁,第三頁。