使用rvest抓取JavaScript表格无数据,远程服务器可行方案咨询
解决方案
这个网站的表格数据是通过JavaScript异步加载的,read_html()只能抓取页面初始的静态HTML,所以无法获取表格主体内容。你可以直接请求网站的API接口拿到原始数据,无需依赖JS渲染工具,完全适配远程服务器环境。
具体步骤:
定位API端点:
打开浏览器开发者工具(F12),切换到「网络」标签页,刷新页面后筛选「XHR」类型请求,找到返回自由球员数据的API(例如/api/free-agency),该接口通常会接受年份参数(如year=2024)。用R请求API并解析数据:
使用httr发送请求,jsonlite解析返回的JSON数据,最终转换为DataFrame:library(httr) library(jsonlite) library(tidyverse) # 发送API请求,添加User-Agent避免被拦截 response <- GET( url = "https://overthecap.com/api/free-agency", query = list(year = 2024), add_headers( "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" ) ) # 解析JSON数据 fa_data <- fromJSON(content(response, "text")) # 转换为DataFrame(数据通常嵌套在data字段下,根据实际返回结构调整) fa_table <- as_tibble(fa_data$data)
说明:
- API返回的是结构化JSON数据,比解析HTML表格更稳定,且无需处理JS渲染问题。
- 若API参数或结构有变化,可再次通过浏览器开发者工具确认最新请求地址和参数。
内容的提问来源于stack exchange,提问作者Sam Hoppen
相关产品推荐
相关产品推荐

