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

rstatscn包运行异常:服务器返回HTML而非JSON响应求助

解决rstatscn包更新后服务器响应不匹配的问题

问题根源

rstatscn依赖的国家统计局接口大概率更新了请求规则、响应结构或验证机制,旧版本包的请求逻辑和当前服务器要求不匹配,导致返回HTML(通常是错误页或验证页面)而非预期的JSON数据。

可行修复方案

  • 安装包的开发版本
    CRAN上的稳定版更新往往滞后,开发者可能在GitHub上维护了适配新接口的版本:

    # 卸载旧版本
    remove.packages("rstatscn")
    # 安装devtools(未安装的话执行此步)
    install.packages("devtools")
    # 安装GitHub最新开发版
    devtools::install_github("hongtaoh/rstatscn")
    

    注意:确认选择维护活跃的仓库分支。

  • 添加浏览器模拟请求头
    服务器可能会拦截非浏览器类型的请求,全局设置贴近浏览器的请求头再尝试调用:

    # 设置模拟浏览器的请求头
    httr::set_config(httr::add_headers(
      "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
      "Accept" = "application/json, text/javascript, */*; q=0.01"
    ))
    # 保留之前的SSL配置
    httr::set_config(httr::config(ssl_verifypeer = 0L))
    
    # 再次测试函数
    rstatscn::statscnQueryZb(zbid = "zb", dbcode = "hgnd")
    rstatscn::statscnQueryData('A01',dbcode='hgyd')
    
  • 手动调试接口请求
    如果以上方法无效,直接用httr包发送请求查看返回内容,定位具体问题:

    # 模拟statscnQueryZb的请求
    response <- httr::GET(
      url = "http://data.stats.gov.cn/zbQuery.do",
      query = list(zbid = "zb", dbcode = "hgnd"),
      httr::add_headers(
        "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
      ),
      httr::config(ssl_verifypeer = 0L)
    )
    # 查看返回的原始内容
    cat(httr::content(response, "text"))
    

根据返回的HTML内容,判断是否需要添加cookie验证、调整请求参数或更换接口地址。

  • 使用替代方案
    如果rstatscn长期无人维护,可直接调用国家统计局公开API,结合httr、jsonlite、tidyverse包手动处理请求和数据解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:57:46