0

0

Rvest 网络爬虫实战:高效抓取日本职业棒球联盟(NPB)官网数据

霞舞

霞舞

发布时间:2026-02-01 14:03:01

|

991人浏览过

|

来源于php中文网

原创

Rvest 网络爬虫实战:高效抓取日本职业棒球联盟(NPB)官网数据

本文详解如何使用 r 语言的 rvest 包稳定抓取 npb.jp 网站上的棒球统计表格,重点解决 ssl 证书错误、动态结构识别与 css 选择器失效等常见问题,并提供可复用的健壮代码方案。

在使用 rvest 抓取日本职业棒球联盟(NPB)官网(如 https://www.php.cn/link/b4a52d5e8d7a56355abf7597fe5b2bbd)时,初学者常遇到“无法定位表格”的问题——这并非因为网页结构复杂,而多源于三个关键因素:HTTPS 证书验证失败、HTML 实际结构与开发者工具显示不一致、以及过度嵌套的 CSS 选择器导致节点匹配失败

原始代码中使用的 CSS 选择器 #stdivmaintbl > table > tbody > tr > td > div:nth-child(1) 过于具体且依赖 DOM 渲染路径,而 NPB 官网实际采用的是语义化类名(如 .stdtblmain)包裹表格,且页面中存在多个同类型表格(例如投手/打者统计),直接硬编码层级极易断裂。

✅ 推荐做法是:优先使用语义清晰的 class 名称定位,避免深度层级依赖。实测表明,.stdtblmain 是该页面所有主统计表的统一容器类,配合 html_table() 可自动解析其内部

宣小二
宣小二

宣小二:媒体发稿平台,自媒体发稿平台,短视频矩阵发布平台,基于AI驱动的企业自助式投放平台。

下载
元素:
library(rvest)
library(magrittr)

# 方案一:绕过 SSL 证书问题(推荐用于调试)
# 将网页另存为本地 HTML 文件(右键 → “另存为” → 纯文本 HTML)
url <- "baseball.html"  # 替换为你的本地路径
tables <- url %>% 
  read_html() %>% 
  html_nodes(".stdtblmain") %>% 
  html_table(header = TRUE, fill = TRUE)

# 获取第一个主表(通常为打者综合统计)
df_batters <- tables[[1]]
head(df_batters[, 1:10])  # 查看前10列预览

⚠️ 注意事项:

  • 证书错误处理:若直接读取 URL 报错 SSL certificate problem(常见于 macOS 或旧版 libcurl),请先用浏览器保存网页源码为 baseball.html,再本地读取;或临时启用证书忽略(仅限测试环境):
    Sys.setenv("CURL_CA_BUNDLE" = "")  # 不推荐生产环境使用
  • 表格空值与合并单元格:NPB 表格大量使用 rowspan/colspan 和空
占位,html_table(fill = TRUE) 可自动填充缺失值,但需后续清洗(如删除重复标题行、清理 "***" 占位符)。
  • 多表提取:页面通常包含多个 .stdtblmain 表格(如打者、投手、守备),可用 length(tables) 查看数量,再按索引提取:
    df_pitchers <- tables[[2]]  # 第二个主表常为投手数据
  • ? 总结:成功抓取的核心在于「简化选择器 + 善用容错参数 + 本地化调试先行」。不要迷信浏览器开发者工具中看到的完整路径,而应观察

    的顶层容器类;始终开启 fill = TRUE 应对不规则 HTML;并将网络请求问题隔离为本地文件处理,大幅提升开发效率与稳定性。

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    class在c语言中的意思
    class在c语言中的意思

    在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

    469

    2024.01.03

    python中class的含义
    python中class的含义

    本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

    17

    2025.12.06

    length函数用法
    length函数用法

    length函数用于返回指定字符串的字符数或字节数。可以用于计算字符串的长度,以便在查询和处理字符串数据时进行操作和判断。 需要注意的是length函数计算的是字符串的字符数,而不是字节数。对于多字节字符集,一个字符可能由多个字节组成。因此,length函数在计算字符串长度时会将多字节字符作为一个字符来计算。更多关于length函数的用法,大家可以阅读本专题下面的文章。

    928

    2023.09.19

    DOM是什么意思
    DOM是什么意思

    dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

    3415

    2024.08.14

    macOS怎么切换用户账户
    macOS怎么切换用户账户

    在 macOS 系统中,可通过多种方式切换用户账户。如点击苹果图标选择 “系统偏好设置”,打开 “用户与群组” 进行切换;或启用快速用户切换功能,通过菜单栏或控制中心的账户名称切换;还能使用快捷键 “Control+Command+Q” 锁定屏幕后切换。

    346

    2025.05.09

    http与https有哪些区别
    http与https有哪些区别

    http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    2174

    2024.08.16

    SSL检测工具介绍
    SSL检测工具介绍

    SSL检测工具有SSL Labs、SSL Check、SSL Server Test、SSLMate、SSL/TLS Analyzer等。详细介绍:1、SSL Labs是一个由Qualys提供的在线SSL检测工具,可以评估服务器证书的部署情况、加密套件、协议支持等方面的安全性,它提供了一个详细的报告,包括证书的颁发者、有效期、安全性配置等;2、SSL Check等等。

    340

    2023.10.20

    go语言 注释编码
    go语言 注释编码

    本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

    24

    2026.01.31

    go语言 math包
    go语言 math包

    本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

    13

    2026.01.31

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Sass 教程
    Sass 教程

    共14课时 | 0.8万人学习

    Bootstrap 5教程
    Bootstrap 5教程

    共46课时 | 3.1万人学习

    CSS教程
    CSS教程

    共754课时 | 26万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号