使用R从网站提取数据的最佳方法是什么? 例如,我想提取最好的全球品牌 http://www.iaaf.org/records/toplists/sprints/100-metres/outdoor/men/senior/2014 不同测试的自动方式,我可以做一个循环。 在不同的年份,一次?
另外我会使用另一种允许导出到csv的编程语言,我感兴趣的是它很快,而且不需要复制和粘贴。
答案 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)