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
相关产品推荐
相关产品推荐

