今天R语言给我帮了一个大忙,简单的几行代码几乎节省了我一天的时间,小白表示R语言太有用了!
问题如下:
我想获取网页中表格里的数据,网页表格如下图
但是呢,很坑爹的是,这个表格不能复制粘贴,Ctrl+C,Ctrl+V后出来的只是网址,估计是被禁用了复制粘贴功能。而如果一个一个敲的话工作量会很大,估计最后眼都要瞎了……
整个数据量如下,http://www.chinacustomsstat.com/aspx/1/NewData/Stat_Data.aspx?state=1&next=2¤cy=usd&year=2016
有2014-2017年四年,每年有7个项目,每个项目分成12个月,共计336个表,有的表内容还特别多,数字特别大,如下所示:
照这个工作量,一个数一个数敲到Excel中的话,一天不吃不喝估计都搞不定。
幸好,我最近刚入门了R……
听说R语言也有爬取数据的功能,于是在网上简单的搜了一些帖子后,利用了XML包,成功的将这网页中的336个表存成了Excel格式。
代码如下:
>install.packages(“XML”)#安装XML包
>library(XML) #载入XML包
>u<-"http://www.chinacustomsstat.com/aspx/1/NewData/Stat_Class.aspx?state=1&t=2&guid=7146" #写入表格所在的网址
>tbls<-readHTMLTable(u) #分析网页中的表格,如果网页包含多个表格,需要确定读取哪个表。可通过识别表的行数来确定,具体见R语言网页数据抓取的一个实例_戊甲_新浪博客
>pop<-readHTMLTable(u,which=1) #读取网页中的第一张表
>write.csv(pop,file="d:/pop.csv") #存储pop为CSV文档至D盘中
这样,就快速实现了网页中的数据爬取。第一次将R语言运用到工作中去,灰常有成就感~但是毕竟有336个网页,最后要运行336次代码,工作量也是有的。各位童鞋如果有更好的方法可以更快速的导出数据的欢迎提供~
网友评论
```
install.packages("XML")
library(XML) #载入XML包
u<-"http://www.chinacustomsstat.com/aspx/1/NewData/Stat_Class.aspx?state=1&t=2&guid=7146" #写入表格所在的网址
tbls<-readHTMLTable(u) #分析网页中的表格,如果网页包含多个表格,需要确定读取哪个表。
str(tbls)
pop<-readHTMLTable(u,which=1) #读取网页中的第一张表
head(pop)
write.csv(pop,file="d:/pop.csv") #存储pop为CSV文档至D盘中
```