使用R语言rvest包爬取npb.jp网站表格失败求助
解决rvest爬取npb.jp棒球数据表格失败的问题
你的问题出在CSS选择器的定位逻辑上,原始HTML结构和你写的选择器不匹配,尤其是tbody节点——浏览器会自动给表格补全tbody,但rvest读取的是服务器返回的原始HTML,里面可能没有这个节点,导致选择器失效。另外你原来的选择器只指向了第一个div下的内容,没覆盖到第二张表格。
修正方案:
直接定位目标容器下的所有表格节点,跳过冗余层级:
library(rvest) # 读取目标网页 html <- read_html("https://npb.jp/bis/eng/2022/stats/std_c.html") # 定位#stdivmaintbl容器内的所有表格,这就是你要的两张联赛数据表格 table_nodes <- html_nodes(html, "#stdivmaintbl table") # 提取第一张表格(中央联盟数据) central_league_df <- as.data.frame(html_table(table_nodes[[1]], header = TRUE, fill = TRUE)) # 提取第二张表格(太平洋联盟数据) pacific_league_df <- as.data.frame(html_table(table_nodes[[2]], header = TRUE, fill = TRUE)) # 验证结果 head(central_league_df) head(pacific_league_df)
关键说明:
- 去掉了冗余的
tbody层级,直接用#stdivmaintbl table定位,避免原始HTML和浏览器渲染结构的差异影响选择器 - 一次获取两个表格节点,分别提取就能拿到两张联赛的完整数据
fill = TRUE参数用来处理表格内单元格合并的情况,避免解析出错
内容的提问来源于stack exchange,提问作者Brad
相关产品推荐
相关产品推荐

