請教一下怎麼學用R爬網站比較快?


我寫的專欄,基本都介紹到了R語言與數據挖掘4——數據獲取之爬蟲利器(Rvest包) - 溫如的文章 - 知乎專欄R語言與數據挖掘3——數據獲取之爬蟲基礎(Rcurl與XML包) - 溫如的文章 - 知乎專欄
Rcurl,XML,httr,rvest,強烈推薦rvest,模仿的是python的bs4模塊。


1、R與Python的選擇

Python傾向於做大型爬蟲,語法相對複雜,爬蟲的學習曲線會相對陡峭。 如果想成為專業人士,推薦使用Python,目前也是最熱的語言之一,有豐富的學習資源和活躍的社區,學習成本較低。

R語法相對直觀,規則更加靈活,其中rvest包能解決大部分的爬蟲問題,學起來很簡單,缺點是學習資源和討論社區較少。如果是初學者,或對爬蟲規模要求不高,推薦使用R語言,熟悉了爬蟲原理後再轉到Python也是很快的。

2、基於R的學習

如果想快速掌握爬蟲技能,可以參考以下建議:

  1. 尋找一個需要用爬蟲來解決的業務問題(比如做科研時的數據收集,儘可能簡單些)
  2. 學習rvest包,著重使用read_html、read_node、read_text、read_attr這四個函數,若遇到亂碼,考慮guess_encoding、repair_encoding兩個函數。
  3. 以待解決的問題為導向,只學習需要的知識,然後解決自己的業務問題(註:不用按照說明書一個一個學,有一些函數基本用不到,等用到再學也不晚)。

這時初學者會有些成就感,可以激發學習興趣,而且一兩天就夠了,學成後能夠解決很多簡單問題。

拓展內容:

  1. 如果爬取數據是由JavaScript形式展示的,去學習RSelenium包,它裡面的函數很多,但我們只需要學會remoteDriver類中的remoteDriver、open、navigate、getPageSource就行了,剩下的由rvest包接手。
  2. 如果在爬取的文本數據,你只想要其中一個字元串或數字,那你可以去學習stringr包,裡面包含了很多字元串處理的函數,可以滿足大部分文本處理工作。

3、推薦書籍

基於R語言的自動數據收集

總結:

  • 問題導向:學習動機的來源,最好有些壓力(領導或導師)
  • 極簡主義:需要什麼學什麼,學多了也浪費,很快就忘了

如果想成為專家,那還是系統性地學習吧


youtube.com 上的RCurl教程(講師有些稚嫩)用R做爬蟲不如用Scrapy.

由於電商網站的數據的實時性要求,數據分析時一般直接從網頁爬取。因此使用爬蟲的方法顯得十分重要。R作為數據分析的軟體,可以直接對爬取的數據進行後續處理,加上上手快的特點,是電商網站數據爬取和分析的好工具。

下面以?http://cn.shopbop.com/為例 簡單分享下使用Rcurl對網站進行數據爬取的過程。

查看圖片

首先需要在Rgui里安裝需要的軟體包

require("RCurl")

require("rjson")

require(stringr)

require(XML)

#得到網頁地址,並將其轉換成html源碼

url = "http://cn.shopbop.com/"

doc = getURL(url)

txt = htmlParse(doc, asText = TRUE)

print(txt)

#由於獲取網頁中商品數據需要對html源碼結構進行分析,因此可以直接在瀏覽器中查看後,再到R中進行編輯

查看圖片

在源碼中很容易找到網站導航中子網站的網址

查看圖片

#因此可以通過xmlPath語言找到相應子網站的節點

a &

如果得到的中文有亂碼,則需要對編碼進行轉換

b &

c &

c

否則 可以通過xmlGetAttr函數 得到所需的attributes

?d &

查看圖片

??由於得到的只是子網頁的路徑,要獲取子網頁的數據 需要用paste鏈接網站根目錄地址

d1=paste(url,d[1],sep="" )

?#對於批量爬取商品的信息還需要獲取商品展示子網頁的頁數

查看圖片每頁顯示40個商品,一共有1200個商品。

查看圖片

???通過網址,我們很容易了解商品展示頁的地址規則。

查看圖片

#因此,可以通過一個簡單的循環來獲取所有網頁的地址,從而獲取每個網頁的所有商品信息。???

a &

d &

pagenum=strsplit(d,"=")

maxpagenum=0;

for(i in 1:length(pagenum)){

maxpagenum[i]= pagenum[[i]][3]

}

maxpagenum=max(as.numeric(maxpagenum))

#[1] 1200

#在獲得所有網頁後,獲取所有商品的信息就變得簡單了,只要循環對每個網頁的信息進行xml關鍵字的爬取

#名稱信息?

查看圖片

查看圖片圖片信息

查看圖片價格信息

?通過文本處理和輸出,就可以將其進行保存和後續的數據分析。

歡迎交流討論批評指正(qq 570881451)?

更多資訊歡迎關注微信號:ClanofData 拓端數據科技

博客 gegeb1ue_新浪博客


推薦閱讀:
相关文章