我正在尝试从此url删除表中包含的数据:
url <- "http://mlb.mlb.com/stats/sortable.jsp#elem=%5Bobject+Object%5D&tab_level=child&click_text=Sortable+Player+hitting&game_type='R'&season=2018&season_type=ANY&league_code='MLB'§ionType=sp&statType=hitting&page=1&ts=1567176051240&playerType=QUALIFIER&sportCode='mlb'&split=&team_id=&active_sw=&position=&page_type=SortablePlayer&sortOrder='desc'&sortColumn=avg&results=&perPage=50&timeframe=&last_x_days=&extended=0"
我尝试在R中使用以下代码:
library(rvest)
library(xml2)
data <- read_html(url)
hitting2018 <- data %>%
html_nodes("table") %>%
html_table(fill=TRUE) %>%
.[[1]] # because is the only table
hitting2018
运行代码后,r向我显示:Error in .[[1]] : subscript out of bounds
任何帮助或想法抓取数据的人都会很感激,
答案 0 :(得分:0)
该信息是动态加载的。您可以通过在浏览器中关闭javascript来查看-表格未加载。刷新页面 F5 时,您可以通过开发工具 F12 监视Web流量,并查看源xhr请求(返回json)。
您可以直接调用此网址并解析json
library(jsonlite)
data <- jsonlite::read_json("http://mlb.mlb.com/pubajax/wf/flow/stats.splayer?season=2018&sort_order='desc'&sort_column='avg'&stat_type=hitting&page_type=SortablePlayer&game_type='R'&player_pool=QUALIFIER&season_type=ANY&sport_code='mlb'&results=1000&recSP=1&recPP=50", simplifyVector = T)
print(data$stats_sortable_player$queryResults$row)