使用rvest爬取网页时遇HTTP error 403错误求助
解决思路
自定义请求头绕过反爬拦截
很多网站会识别并拦截R默认的爬虫请求头,模拟浏览器的请求头即可解决。修改代码如下:library(rvest) library(httr) url <- "https://www.state.gov/covid-19-recovery/vaccine-deliveries/" # 模拟主流浏览器的User-Agent request_headers <- add_headers( `User-Agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" ) # 先发送带请求头的GET请求 page_response <- GET(url, request_headers) # 再解析响应内容 state <- read_html(page_response)排查本地网络限制
- 关闭主笔记本上的代理、VPN工具,这类工具可能会修改网络请求路径导致403错误。
- 检查系统防火墙设置,确认R程序被允许访问外部网络,必要时将R加入防火墙白名单。
重置R会话与更新依赖包
- 重启R/RStudio,清空当前环境后重新加载
rvest和httr包再尝试。 - 运行
update.packages(c("rvest", "httr"))更新依赖包到最新版本,旧版本可能存在网络请求兼容问题。
- 重启R/RStudio,清空当前环境后重新加载
验证DNS解析状态
在主笔记本的命令提示符(Windows)或终端(Mac/Linux)中运行ping www.state.gov,检查是否能正常解析到目标服务器IP。如果解析异常,尝试切换公共DNS(如8.8.8.8、1.1.1.1)。
内容的提问来源于stack exchange,提问作者Anna Rouw
相关产品推荐
相关产品推荐

