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

使用R的rvest/xml2包爬取JS页面:彭博富豪榜遇人机验证求助

解决彭博亿万富豪榜人机验证问题的爬虫方案
  • 模拟真实浏览器请求头
    默认的read_html请求会暴露爬虫特征,通过添加真实的User-Agent和请求头,可以绕过基础的机器人检测。需要借助httr包构造请求:

    install.packages("httr")
    library(rvest)
    library(httr)
    
    url <- "https://www.bloomberg.com/billionaires/"
    # 构造包含真实浏览器标识的请求头
    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" = "zh-CN,zh;q=0.9",
      "Referer" = "https://www.bloomberg.com/"
    )
    
    # 发送请求并解析页面
    response <- GET(url, headers)
    page <- read_html(content(response, "text"))
    
  • 使用动态浏览器渲染工具
    彭博的人机验证可能依赖JavaScript环境,静态请求无法通过。可以用RSelenium模拟真实浏览器操作:

    install.packages("RSelenium")
    library(RSelenium)
    
    # 启动Chrome浏览器(需提前安装ChromeDriver并配置环境变量)
    driver <- rsDriver(browser = "chrome", port = 4444L)
    remDr <- driver[["client"]]
    
    # 访问目标页面
    remDr$navigate("https://www.bloomberg.com/billionaires/")
    
    # 等待页面加载完成(必要时手动完成人机验证,或添加等待时间)
    Sys.sleep(10)
    
    # 获取页面源码并解析
    page_source <- remDr$getPageSource()[[1]]
    page <- read_html(page_source)
    
    # 关闭浏览器
    remDr$close()
    driver$server$stop()
    
  • 注意事项

    • 频繁请求可能触发更严格的反爬机制,建议添加随机延迟(Sys.sleep(runif(1, 2, 5)))
    • 若仍遇到验证,可尝试使用代理IP轮换,或启用Chrome的无头浏览器模式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:08:22