在r中使用XML更有效地解析来自多个网页的数据
这个问题指的是我能够实现我想要的,但我想知道是否有更好、更有效的方法。i、 e.一种需要更少内存才能完成且更快的解决方案 我试图把板球运动员在每场比赛中的个人表现数据集放在一起。在这里,我只关注击球结果。这些数据可在cricinfo网站上获得。使用他们的搜索引擎可以在一个页面上显示多达200个单独的结果。对于这组特殊的表演(T20——这是一种板球比赛),45页上列出了8890场表演。除最后一页有90页外,所有页面都有200页 我存储了所有45页的URL,如下所示:在r中使用XML更有效地解析来自多个网页的数据,xml,r,for-loop,Xml,R,For Loop,这个问题指的是我能够实现我想要的,但我想知道是否有更好、更有效的方法。i、 e.一种需要更少内存才能完成且更快的解决方案 我试图把板球运动员在每场比赛中的个人表现数据集放在一起。在这里,我只关注击球结果。这些数据可在cricinfo网站上获得。使用他们的搜索引擎可以在一个页面上显示多达200个单独的结果。对于这组特殊的表演(T20——这是一种板球比赛),45页上列出了8890场表演。除最后一页有90页外,所有页面都有200页 我存储了所有45页的URL,如下所示: library(XML) n
library(XML)
nums<-1:45
urls<-paste("http://stats.espncricinfo.com/ci/engine/stats/index.html?class=3;filter=advanced;orderby=batted_score;page=",
nums,";size=200;template=results;type=batting;view=innings", sep="")
urls #45 urls
names(urls) <- paste("x",nums,sep="") #out of habit, I named them
以下内容将所有内容合并为一个数据帧,并删除了2个无意义的列:
T20.bat<-do.call("rbind", results.tables)
T20.bat<-T20.bat[c(1:8,10:12)]
head(T20.bat)
# Player Runs Mins BF 4s 6s SR Inns Opposition Ground Start Date
#1 AJ Finch (Aus) 156 70 63 11 14 247.61 1 v England Southampton 29 Aug 2013
#2 BB McCullum (NZ) 123 72 58 11 7 212.06 1 v Bangladesh Pallekele 21 Sep 2012
#3 RE Levi (SA) 117* 67 51 5 13 229.41 2 v New Zealand Hamilton 19 Feb 2012
#4 CH Gayle (WI) 117 75 57 7 10 205.26 1 v South Africa Johannesburg 11 Sep 2007
#5 BB McCullum (NZ) 116* 87 56 12 8 207.14 1 v Australia Christchurch 28 Feb 2010
#6 AD Hales (Eng) 116* 97 64 11 6 181.25 2 v Sri Lanka Chittagong 27 Mar 2014
T20.bath您看过readhtmlist
了吗?另外,在XML
中有一些*apply
类型函数可能会有所帮助。我还可以通过并行循环/apply
执行此类任务,拆分URL,并使用多个核心。效率不高,但可以缩短时间。
T20.bat<-do.call("rbind", results.tables)
T20.bat<-T20.bat[c(1:8,10:12)]
head(T20.bat)
# Player Runs Mins BF 4s 6s SR Inns Opposition Ground Start Date
#1 AJ Finch (Aus) 156 70 63 11 14 247.61 1 v England Southampton 29 Aug 2013
#2 BB McCullum (NZ) 123 72 58 11 7 212.06 1 v Bangladesh Pallekele 21 Sep 2012
#3 RE Levi (SA) 117* 67 51 5 13 229.41 2 v New Zealand Hamilton 19 Feb 2012
#4 CH Gayle (WI) 117 75 57 7 10 205.26 1 v South Africa Johannesburg 11 Sep 2007
#5 BB McCullum (NZ) 116* 87 56 12 8 207.14 1 v Australia Christchurch 28 Feb 2010
#6 AD Hales (Eng) 116* 97 64 11 6 181.25 2 v Sri Lanka Chittagong 27 Mar 2014