【发布时间】:2017-07-10 10:28:32
【问题描述】:
我正在尝试从不同的足球队抓取 HTML 表格。这是我要抓取的表格,但是我想从所有团队抓取同一张表格,最终创建一个包含球员姓名及其数据的单个 CSV 文件。
http://www.pro-football-reference.com/teams/tam/2016_draft.htm
# teams
teams <- c("ATL", "TAM", "NOR", "CAR", "GNB", "DET", "MIN", "CHI", "SEA", "CRD", "RAM", "NWE", "MIA", "BUF", "NYJ", "KAN", "RAI", "DEN", "SDG", "PIT", "RAV", "SFO", "CIN", "CLE", "HTX", "OTI", "CLT", "JAX", "DAL", "NYG", "WAS", "PHI")
# loop
for(i in teams) {
url <-paste0("http://www.pro-football-reference.com/teams/", i,"/2016-snap-counts.htm#snap_counts::none", sep="")
webpage <- read_html(url)
# grab table
sb_table <- html_nodes(webpage, 'table')
html_table(sb_table)
head(sb_table)
# bind to dataframe
df <- rbind(df, sb_table)
}
我收到一个错误,认为我应该使用 CSS 或 Xpath 而不是两者都使用,但我无法确定问题的确切位置(我怀疑 html_nodes 命令)。谁能帮我解决这个问题?
【问题讨论】:
-
df来自哪里? -
根据您的示例网址,
teams中的缩写不应该是小写吗? -
您需要在循环之外定义
df<-data.frame(),否则您将在每次迭代时覆盖它。 -
“除非本段特别规定,您同意不使用或启动任何访问本网站的自动化系统,包括但不限于机器人、蜘蛛、离线阅读器或类似设备以一种在任何给定时间段内向站点服务器发送的请求消息比普通人在同一时间段内通过使用传统的在线 Web 浏览器阅读、查看和提交材料时通常产生的请求消息更多的方式。SRL 保留撤销本段中授予的例外的权利”
标签: r web-scraping rvest