前言:
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工具包成功抓取到資料,在此也僅僅是給對資料相關分析感興趣的朋友提供一絲參考而已。