天天看點

R語言之RCurl實作檔案批量下載下傳

前言:

   RCurl工具包的作者是由Duncan Temple Lang現任加州大學 U.C. Davis分校副教授。他曾緻力于借助統計整合進行資訊技術的探索。使用者通過RCurl可以輕易通路網頁,進行相關資料的抓取以及下載下傳,為資料分析提供原始素材。近年RCurl在資料分析業界中使用也越來越流行。

Step1:安裝RCurl

install.packages('RCurl')      

Step2:代碼實作

===========================

1 #利用RCurl包批量下載下傳(抓取)檔案
 2 
 3 library('RCurl')
 4 
 5 html=getURL("http://rfunction.com/code/1202/")
 6 
 7 #檢視網頁源碼,之後确定抓取資訊的“代碼字串”特征
 8 
 9 temp=strsplit(html,"<li><a href="")[[1]]   #清單
10 
11 files=strsplit(temp,""")   #轉義字元“”
12 
13 files=lapply(files,function(x){x[1]}) 
14 
15 #可通過指令“?lapply”檢視該函數具體用法
16 
17 files
18 
19 class(files)
20 
21 files=unlist(files)    #二維轉一維
22 
23 files=files[-(1:2)]     #剔除特定元素
24 
25  
26 
27 #----------------
28 
29 #設定下載下傳目錄,循環周遊
30 
31 setwd('G:\R_Project\RCurl抓取的檔案')     #注意‘\’轉義
32 
33 dir()
34 
35 i=1
36 
37 base="http://rfunction.com/code/1202/"
38 
39 for(i in 1:length(files)){
40 
41 url=paste(base,files[i],sep='')    #拼接url
42 
43 temp=getBinaryURL(url)    #擷取網頁内容
44 
45 note=file(paste("1202",files[i],sep='.'),open="wb")   #檔案屬性
46 
47 writeBin(temp,note)     #檔案寫入内容
48 
49 close(note)         #關閉檔案
50 
51 }      

Step3:抓取結果

注意:

1)若出現RCurl無法正常安裝,請更新R版本。

2)為了防止因頻繁通路該網站而被拉進黑名單,建議采用sleep()間隔通路。具體實作方式僅需要在上述代碼最後的循環内部加入如下一行代碼:

Sys.sleep(2)        

結語:

  爬蟲其實也就這麼回事兒~本文利用R語言的RCurl工具包成功抓取到資料,在此也僅僅是給對資料相關分析感興趣的朋友提供一絲參考而已。