Rvest爬蟲學習筆記——從IT桔子看互聯網融資情況

最近在嘗試用R寫簡單的網絡爬蟲,順手分享一下代碼和學習筆記。適合新手閱讀。

關于編程

非程序猿出身的同學們可能會對打代碼這件事情抱有天然的敬畏感,什么JSON、Ajax、CDN、React Native之類層出不窮的術語,一聽到就很頭疼。雖然程序猿的世界水很深,但是成為一個入門級選手也并沒有我們想的那么難。

Just Do It,我覺得這是個很好的法則。找一個感興趣的項目,動手開干,當你解決了所有技術問題和知識盲區終于完成項目后,就已經進步很多了。

前期準備

網絡爬蟲是一個很有意思的技術,如果會寫個簡單的爬蟲,就可以用來爬取網頁上的數據,自己可以做做簡單的分析,獲取一些新的知識。用R或者用Python都可以寫,據說Python的能力更強大一些。但是由于我只學過R沒學過Python,所以還是先從R入手。

開始碼代碼之前,首先為自己選擇一個感興趣的課題。我選擇的是IT桔子上的互聯網公司融資記錄,大概是下圖這個樣子的。這個網站并不要求登錄后才能查看,沒有其他的鑒權機制,數據可以直接爬下來,難度不高。因為每頁只顯示10條數據,所以我們需要用一個循環爬取多頁的數據。


IT桔子上的融資記錄

我們的目標是把這些數據以結構化的方式存儲下來,并將數據導出到Excel表格中。

代碼分析

首先上代碼:

Rvest爬蟲代碼

1、安裝程序包
安裝程序包

Rvest是用R做網絡爬蟲時最常用的程序包之一,另一個常用的程序包是RCurl。第三部分的幾個關鍵函數read_html、html_nodes和html_text都是Rvest程序包中的函數。

安裝xlsx程序包是為了最終將獲取到的數據輸出到excel中,如果沒有這個需求也可以不安裝這個包。第四部分的函數write.csv就是xlsx中的函數。

2、定義變量

定義變量

我把CSS選擇器的定義放在了這個階段,因為雖然需要爬取幾個不同的頁面,但是頁面結構都是一樣的,所以幾個頁面都使用一樣的CSS Selector。CSS選擇器要怎么寫可以參考這篇文章。如果不太懂的話,有一個很簡單的方法:

復制CSS選擇器

如果你用的是Chrome瀏覽器,鼠標移到你關注的元素上,右鍵-檢查,就可以打開開發者工具并且自動定位到你剛剛選的元素上。確認你要的信息在哪個元素中之后,選中-右鍵-Copy-Copy selector,就可以復制下來對應元素的CSS選擇器。

這一部分的最后兩行代碼是用來定義存儲數據的矩陣com的。這里需要先定義矩陣的大小,否則在后面的循環中會報錯。為了便于識別信息,順便定義了矩陣的列名。

3、開始循環,爬取內容

循環體

觀察IT桔子的融資事件列表頁面,幾個頁面的url結構基本是一致的,所以根據這個規律我們可以定義每一個頁面的url字符串。

read_html函數將url中的信息讀取到read變量中。html_nodes讀取了我們選擇的CSS選擇器對應的元素的內容,而html_text()函數表示只讀取其中的文本信息。這樣子我們就把網頁中的主要信息讀取到變量info中了。

得到的info是下面這樣的一個混亂的字符串,有很多我們不需要的\n\t。


info

這里主要通過gsub和strplit兩個函數實現字符串的替換和分割,看起來似乎比較復雜,但是對不同情況的字符串會有不同的處理方法,所以這里不細講。可以通過在R中鍵入help(gsub)和help(strsplit)來查看函數的具體使用方式。經過整理后的數據是這樣的:


整理后的info_list

接下來通過一個嵌套循環將整理好的數據寫入com中。寫入數據后的com是這樣的:

com

4、輸出到csv文件
輸出com

使用一個簡單的函數write.csv就可以把com變量寫入到指定的文件中了。最終輸出的表格是這樣的:


爬蟲導出的數據

后記

對于大多數網站來說寫個爬蟲把數據爬取下來并不難,但是有些網站需要登錄,有些網站有反爬蟲機制,就需要花費更多功夫跟這些網站斗智斗勇。

R同時也可以做數據分析,以及輸出非常漂亮的可視化圖表。所以我們把數據整理到excel表格中并不是終點,用R還可以做很多其他嘗試。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容