You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决RStudio Cloud访问任意网站时出现的503错误?

解决R中Error in open.connection(x, "rb") : HTTP error 503问题

问题描述

在Windows笔记本上运行最新版RStudio Cloud,完成学校文本挖掘练习时,使用rvest访问Amazon、IMDB、Glassdoor等网站始终触发HTTP error 503,无法完成初始连接。尝试过多种网上方案均无效,当前测试代码如下:

# 加载必要包
library(tidyverse)
library(rvest)

# 定义链接并读取页面
link = "https://www.glassdoor.ca/Reviews/Tesla-Reviews-E43129.htm"
page = read_html(link)

# 提取页面元素
emp_status = page %>% 
  html_nodes(".eg4psks0") %>% 
  html_text()
headline = page %>% 
  html_nodes(".reviewLink") %>% 
  html_text()
rating = page %>% 
  html_nodes("#ReviewsFeed .mr-xsm") %>% 
  html_text()
pros = page %>% 
  html_nodes(".v2__EIReviewDetailsV2__fullWidth:nth-child(1) span") %>% 
  html_text()
cons = page %>% 
  html_nodes(".v2__EIReviewDetailsV2__fullWidth:nth-child(2) span") %>% 
  html_text()

# 保存数据框
tesla_emp_reviews = data.frame(emp_status, headline, rating, pros, cons, stringsAsFactors = FALSE)

可行解决方案

1. 伪装浏览器请求头

多数网站会拦截非浏览器发起的请求,用httr包添加浏览器风格的请求头即可绕过:

library(tidyverse)
library(rvest)
library(httr)

# 构造浏览器请求头
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",
  `Accept-Language` = "en-US,en;q=0.9",
  `Accept` = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
)

# 带请求头发送请求并解析页面
response = GET("https://www.glassdoor.ca/Reviews/Tesla-Reviews-E43129.htm", headers)
page = read_html(response)

# 后续提取逻辑不变

2. 排查网络拦截与代理设置

  • 确认本地防火墙、杀毒软件未拦截RStudio Cloud的网络请求
  • 若使用代理,在R中配置代理信息:
# 设置HTTP/HTTPS代理地址
Sys.setenv(http_proxy = "http://你的代理地址:端口")
Sys.setenv(https_proxy = "http://你的代理地址:端口")
# 代理需要认证时添加以下两行
Sys.setenv(http_proxy_user = "用户名:密码")
Sys.setenv(https_proxy_user = "用户名:密码")

3. 降低请求频率避免限流

503错误常因请求过于频繁被网站限流,添加随机延迟并遵守网站robots规则:

library(robotstxt)

# 先检查网站是否允许爬取目标页面
paths_allowed("https://www.glassdoor.ca/Reviews/Tesla-Reviews-E43129.htm")

# 每次请求前添加1-3秒随机延迟
Sys.sleep(runif(1, 1, 3))

4. 携带Cookie访问

部分网站需要Cookie才能正常加载页面,先在浏览器打开目标页面,复制Cookie到请求头:

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",
  `Cookie` = "从浏览器复制的完整Cookie字符串"
)
response = GET("https://www.glassdoor.ca/Reviews/Tesla-Reviews-E43129.htm", headers)
page = read_html(response)

5. 使用polite包规范爬取

polite包会自动处理请求头、延迟和robots规则,大幅降低被拦截概率:

library(polite)
library(rvest)

# 创建礼貌爬取会话,注明教育用途
session = bow("https://www.glassdoor.ca/Reviews/Tesla-Reviews-E43129.htm", 
              user_agent = "你的学校邮箱(用于文本挖掘课程练习)")
# 获取页面
page = scrape(session)

# 提取数据
emp_status = page %>% 
  html_nodes(".eg4psks0") %>% 
  html_text()

内容的提问来源于stack exchange,提问作者Bodhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:20:44