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

R语言rvest爬取Hepsiburada页面报HTTP 403错误如何解决

问题根因

两个报错属于连锁触发,不需要分开定位:

  • 核心错误是HTTP error 403:Hepsiburada站点配置了反爬规则,rvest默认发起的请求携带的User-Agent标识会暴露自身为R爬虫程序,而非真实用户使用的浏览器,服务器直接拒绝返回页面内容。
  • 后续的xml_find_all方法适配错误是连带问题:read_html()执行失败后,page变量未被赋值为目标网页的解析对象,R环境会默认调用内置的page分页函数(属于function类型),对函数对象调用html_nodes()自然会触发类型不匹配报错,解决403问题后该报错会自动消失,无需单独处理。
排查思路

按以下顺序排查即可:

  • 先把目标链接复制到本地普通浏览器中打开,确认链接未失效、站点可正常访问、本地IP未被站点永久封禁
  • 检查请求标识:确认请求携带的User-Agent是否为真实浏览器的标识,是否缺少站点校验要求的基础请求头
  • 检查请求频率:确认短时间内是否对该站点发起了过高频率的请求,触发了流量拦截规则
解决方案

通过httr包构造模拟真实浏览器的请求头,拿到正常响应后再交给rvest解析,可直接运行以下代码:

# 加载依赖,未安装的话先运行install.packages(c("rvest","dplyr","httr"))安装
library(rvest)
library(dplyr)
library(httr)

link <- "https://www.hepsiburada.com/lg-70nano756pa-70-177-ekran-uydu-alicili-4k-ultra-hd-smart-led-tv-p-HBCV00000YCM48"

# 构造模拟桌面端Chrome的合法请求
response <- GET(
  link,
  # 模拟浏览器UA标识
  user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"),
  add_headers(
    `Accept` = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
    `Accept-Language` = "tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3",
    `Referer` = "https://www.hepsiburada.com/"
  )
)

# 校验请求状态,返回"Success"才代表请求成功
http_status(response)$category

# 解析响应内容为HTML文档
page <- read_html(response)

# 执行原有信息提取逻辑
price <- page %>% html_nodes(".productPrice") %>% html_text()
seller <- page %>% html_nodes(".merchantName") %>% html_text()

补充注意事项

  • 如果运行后仍返回403,可在浏览器中打开目标站点,按F12调出开发者工具,在「网络」面板中找到任意一个对hepsiburada的请求,复制请求头里真实的User-Agent值替换代码中对应字段即可
  • 控制请求频率,批量抓取时单次请求间隔设置为1~2秒,避免短时间大量请求触发IP临时封禁
  • 如果后续发现提取节点返回空值,是因为站点部分商品信息通过JS动态渲染,静态请求拿不到渲染后的内容,可结合chromote包调用本地Chrome完成页面渲染后再解析,不要高频硬撞反爬规则

内容的提问来源于stack exchange,提问作者Kubilay Güzel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:01:23