使用R語言進行超簡單的爬蟲
R語言是一種能用來做統計和資料分析的語言,此外也能進行網路爬蟲。所謂爬蟲就是將網頁上的資料下載回來,本文將示範如何撰寫R語言,進行簡易的爬蟲。
一、安裝R環境與開發工具
二、透過程式安裝套件
開啟R Studio開發工具,新增一個R Script檔案。
輸入指令,安裝接下來的程式碼所需要的套件。其中「rvest」套件是網路爬蟲會用到的函式庫。「magrittr」則提供管線操作語法,例如本文範例程式的「%>%」語法。寫完後,將程式碼全選,再按Run執行。
三、準備要爬的網頁
準備一個有「文章列表」的網頁,此處網頁以Mobile01論壇的機車討論區為例:https://www.mobile01.com/forumtopic.php?c=29
在文章標題按滑鼠右鍵,選擇「檢測元素」,這時會開啟瀏覽器的開發者工具。找到文章標題文字所對應的HTML標籤,按滑鼠右鍵,選擇「複製XPath」以備用。
這個XPath指的是HTML文件中的「路徑」。在這個範例,我們要的是<a>標籤的路徑,因為它的內容是需要的文章標題。
複製到的XPath路徑可能會因瀏覽器而有不同,筆者使用Firefox,路徑是完整地從<html>到<a>標籤為止。
如果使用Chrome,XPath會是 「//*[@id="maincontent"]/div[6]/table/...」代表路徑是從id屬性為maincontent的標籤開始。
四、撰寫程式進行爬蟲
首先引入剛安裝好的套件(函式庫),並將剛剛文章列表網頁的網址指定給變數url。
有了url,接下來就要使用讀取網頁的函式了。請呼叫「read_html」,傳入網址進行讀取,此時會得到該網頁的HTML資料。
再呼叫「html_nodes」,並傳入XPath,在前面的HTML資料中,透過這個路徑來指定要爬取哪個網頁元素(標籤)。
最後呼叫「html_text」,取得該HTML標籤中的內容文字。以上步驟的結果會指定給變數titles,裡面集合了爬取到的文章標題。
注意XPath後面的<tr>標籤,原先為tr[1](或其他數字),此處要改為tr,代表要爬取所有的tr表格列(文章列),而不是特定一個<tr>。
而程式碼中的「%>%」,代表將前面方法的執行結果丟到後面方法的參數去執行。
依照同樣步驟,對「文章回覆數」進行爬取,指定給變數replies。
五、產生表格
取得需要的資料後,現在示範以表格的方式呈現。只要呼叫「data.frame」函式,傳入欄位名稱和資料集合。最後使用「View」函式,將表格物件顯示出來就完成了。此處標題與回覆數的欄位名稱分別是Title與Reply。
記得要將程式碼全選再按「Run」,才能正常執行。
觀察表格,確實爬取到該網頁的文章標題與回覆數。雖然這些東西在原始網頁同樣也可查看,但透過R語言操作,可將重點資料以簡潔的方式呈現。若爬取更多資料,也許能進一步做特別的統計分析或其他用途。