2018年1月28日 星期日

[R]如何取得網頁的Xpath,以實現網頁爬蟲(Web Crawler)目的?

隨著人們對於互聯網的信任和依賴,網頁資料幾乎已成為一個浩瀚無際的龐大資料庫。另外,就資訊呈現的形態而言,人們已由分類架構的入口網站形態(例如蕃薯藤)轉變至依個人需求的搜索網站形態(例如Google和Yandex),甚至是已逐漸成為主流形態的社群媒體(例如Facebook和Twitter),使得人們需求逐漸地由被動滿足轉變為主動滿足,例如曾經在個人Facebook按讚的書本資訊,類似書籍將以高頻率地呈現在個人的Facebook廣告中,使得獲取需求資源的門檻越來越低,並形成新興的商業模式「社群行銷」。

網頁爬蟲技術(Web Crawler)屬於搜索網站形態,藉由目標資訊的搜索、收集和數據清洗的方式,以進行後續的資料分析工作,常用的開源軟體為R和Python。除了將人工複製貼上的重覆性工作降至最低,還可進一步善用軟體一併處理資料分析的工作,一舉數得。

藉由R或Python進行網頁爬蟲工作時,一般需要下載套件(Packages)來讀取網址的html格式內容,以R為例,需要的套件可能包含rvest和xml2。除了下載安裝套件之外,尚須取得Xpath並嵌入程式碼以批次取得目標資料。下列步驟說明如何取得網頁的Xpath,並嵌入R程式碼中,以實現網頁爬蟲工作。

a.以Chrome瀏覽器開啟目標網頁(URL),並按下F12鍵來開啟網頁開發工具視窗,以台灣銀行匯率告示網頁為例,網頁開發工具視窗如圖一紅色框所示。

圖一 開啟網頁開發工具視窗

b.參考圖二紅色指示框,依序點選和操作,以取得目標資訊的Xpath,範例結果如下。
/html/body/div[1]/main/div[4]/table/tbody/tr[2]/td[2]

圖二 取得目標資訊的Xpath

為了完成擷取所有幣種的"本行買入"數據,須將Xpath修改如下列。
/html/body/div/main/div/table/tbody/tr/td[2]/text()

c.將上述Xpath嵌入R程式碼,並將html節點轉成text格式,如圖三所示。以台灣銀行匯率告示網頁為例,藉由R可將即時匯率資訊彙整成表,如圖四所示。

圖三 將Xpath嵌入R程式碼

圖四 匯率資訊表

參考來源:

沒有留言:

張貼留言