提取数据网

时间:2014-09-07 11:04:13

标签: html xml r extract

使用R从网站提取数据的最佳方法是什么?   例如,我想提取最好的全球品牌 http://www.iaaf.org/records/toplists/sprints/100-metres/outdoor/men/senior/2014 不同测试的自动方式,我可以做一个循环。 在不同的年份,一次?

另外我会使用另一种允许导出到csv的编程语言,我感兴趣的是它很快,而且不需要复制和粘贴。

2 个答案:

答案 0 :(得分:1)

这些表似乎也适用于readHTMLTable(但它们仍然需要一些清理):

library(XML)
library(httr)

site <- GET("http://www.iaaf.org/records/toplists/sprints/100-metres/outdoor/men/senior/2013")
site_xml <- content(site, as="parsed")

site_tables <- readHTMLTable(site_xml)

top_list <- site_tables[[1]]

colnames(top_list) <- gsub("[[:space:]]+", "", colnames(top_list))

head(top_list)

##   Rank Mark WIND    Competitor         DOB Nat Pos              Venue        Date
## 1    1 9.77 -0.3    Usain Bolt 21 AUG 1986 JAM   1  Moskva (Luzhniki) 11 AUG 2013
## 2      9.80 +0.6    Usain Bolt 21 AUG 1986 JAM   1          Bruxelles 06 SEP 2013
## 3      9.85 +0.2    Usain Bolt 21 AUG 1986 JAM 1r2        London (OP) 26 JUL 2013
## 4    2 9.85 -0.3 Justin Gatlin 10 FEB 1982 USA   2  Moskva (Luzhniki) 11 AUG 2013
## 5    3 9.87 +1.8  Nesta Carter 11 OCT 1985 JAM 1r2 Madrid (Moratalaz) 13 JUL 2013
## 6    4 9.88 +2.0  Asafa Powell 23 NOV 1982 JAM 1r2           Lausanne 04 JUL 2013

答案 1 :(得分:0)

@Richie Cotton是对的;问题太宽泛,没有尝试解决问题的工作。

也就是说,使用XML包,你可以从这样的东西开始,以获得游泳记录时间:

doc <- htmlTreeParse('http://www.iaaf.org/records/toplists/sprints/100-metres/outdoor/men/senior/2014', useInternal = TRUE)

xpathSApply(doc, "//table[@class = 'records-table toggled-table condensedTbl', xmlValue, trim = TRUE)