我一直试图从网站上删除一系列公司 - Company list 401.html。我可以使用以下代码从本页中删除单个表:
>fileurl = read_html("http://archive.fortune.com
/magazines/fortune/fortune500_archive/full/2005/1")
> content = fileurl %>%
+ html_nodes(xpath = '//*[@id="MagListDataTable"]/table[2]') %>%
+ html_table()
>contentframe = data.frame(content)
> view(contentframe)
但是,我需要从2005年开始追溯到1955年的所有数据以及1到500家公司的列表,而此列表仅显示100家公司和一年一次。我已经认识到对网址的唯一更改是“... fortune500_archive / full /”年“/” 1,201,301或401(每个公司范围)示出)。
我也明白我必须创建一个循环来自动为我收集这些数据,而不是在保存每个表后手动替换url。我已经尝试过阅读其他帖子和观看视频的一些变化功能,但没有一个适合我,我迷路了。
答案 0 :(得分:0)
一些建议可以帮助您入门。首先,编写一个下载和解析每个页面的函数可能很有用,例如
getData <- function(year, start) {
url <- sprintf("http://archive.fortune.com/magazines/fortune/fortune500_archive/full/%d/%d.html",
year, start)
fileurl <- read_html(url)
content <- fileurl %>%
html_nodes(xpath = '//*[@id="MagListDataTable"]/table[2]') %>%
html_table()
contentframe <- data.frame(content)
}
然后我们可以使用lapply
(以及do.call(rbind, ...)
循环遍历年份和页面,以便每年将所有5个数据帧组合在一起)。 E.g:
D <- lapply(2000:2005, function(year) {
do.call(rbind, lapply(seq(1, 500, 100), function(start) {
cat(paste("Retrieving", year, ":", start, "\n"))
getData(year, start)
}))
})