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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM