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

如何在R语言中使用httr调用Zyte API实现代理IP请求

解决Zyte API在R语言(httr包)中的调用问题

原代码的核心错误

  1. API端点错误:你使用的http://proxy.zyte.com:8011/api/v2/是Zyte智能代理管理器的地址,而你购买的是Zyte API,正确端点应为https://api.zyte.com/v2/。
  2. 认证方式错误:Zyte API采用Api-Key请求头直接传递密钥,不需要Base64编码的Basic认证(那是代理服务的认证逻辑)。
  3. 请求方法错误:Zyte API要求通过POST请求传递目标URL(放在JSON请求体中),而非GET请求加targeturl头。

修正后的httr调用代码

library(httr)
library(jsonlite)

# Zyte API 官方端点
api_url <- "https://api.zyte.com/v2/"
# 替换为你的实际API密钥
api_key <- "YOUR_ACTUAL_API_KEY"
# 目标抓取URL
target_url <- all_links.vec[100]

# 构造请求体:指定目标URL及所需内容类型
request_body <- list(
  url = target_url,
  browserHtml = TRUE # 如需渲染动态页面用此参数;静态页面可改用 html = TRUE
)

# 发送POST请求
response <- POST(
  url = api_url,
  add_headers(
    `Api-Key` = api_key,
    `Content-Type` = "application/json"
  ),
  body = toJSON(request_body, auto_unbox = TRUE)
)

# 处理响应结果
if (http_status(response)$category == "Success") {
  content_data <- fromJSON(content(response, "text"))
  # 提取目标页面内容(以渲染后的HTML为例)
  target_content <- content_data$browserHtml
  cat("抓取成功,已获取目标页面内容\n")
} else {
  cat(paste("抓取失败,状态码:", status_code(response), "\n"))
  cat("错误信息:", content(response, "text"), "\n")
}

Zyte API核心调用逻辑(官方文档核心内容翻译)

Zyte API是托管式网页抓取服务,无需自行管理代理IP,只需向API发送POST请求,指定以下核心参数即可完成抓取:

  • url:必填,要抓取的目标网页地址。
  • html:布尔值,返回原始HTML内容(适用于静态页面)。
  • browserHtml:布尔值,返回经过浏览器渲染后的HTML(适用于含JS动态加载内容的页面)。
  • extract:可选,可传入结构化提取规则,直接获取目标数据(如商品价格、标题),无需自行解析HTML。

额外提示

如果需要调试请求,可在POST函数中添加verbose()参数查看详细请求日志,方便排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:01:06