R语言Shiny App开发:爬取宝可梦信息遇SSL证书错误求助
解决Shiny App中read_html()的SSL证书错误问题
Hey there! 我在做爬虫和Shiny项目时也踩过这个SSL证书的坑,给你几个靠谱的解决思路:
1. 临时禁用证书检查(快速应急方案)
这个方法能快速搞定问题,但只建议在你完全信任目标网站时使用——因为禁用证书验证会让你面临中间人攻击的风险。
你可以借助httr包先发起请求并跳过证书检查,再把响应传给read_html():
library(rvest) library(httr) server <- function(input, output) { output$value <- renderPrint({ pokemon <- input$pokemon1 # 替换成你的实际URL拼接逻辑,比如宝可梦数据库的地址 URLpokemon <- paste0("https://pokemondb.net/pokedex/", pokemon) # 跳过SSL证书检查获取网页内容 response <- GET(URLpokemon, config(ssl_verifypeer = FALSE)) html_content <- read_html(response) # 这里添加你提取宝可梦信息的代码,比如抓取种族值、属性等 }) }
2. 更新系统证书库(长期安全方案)
SSL错误很多时候是因为R的默认证书库过时了,更新它是更安全的长期解决办法:
- Windows用户:安装
curl包后运行证书更新命令:install.packages("curl") curl::ca_bundle_update() - macOS用户:安装
openssl包后自动更新SSL证书:install.packages("openssl") openssl::download_ssl_certs() - Linux用户:用系统包管理器重新安装证书库,比如Ubuntu系统:
sudo apt-get install --reinstall ca-certificates
3. 确保依赖包是最新版本
旧版本的rvest或httr可能存在证书相关的bug,先更新这两个包试试:
update.packages(c("rvest", "httr"))
额外检查点
- 确认你的URL拼接没有拼写错误,比如是不是把
https写成了http(不过SSL错误一般出现在HTTPS请求场景); - 如果目标网站有反爬机制,偶尔也会伪装成SSL错误,不过这种情况相对少见。
内容的提问来源于stack exchange,提问作者Donald Johnson
相关产品推荐
相关产品推荐

