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

R语言Web Scraping含特殊字符请求参数报错的解决咨询

解决R语言中特殊参数名的请求报错问题

你的报错核心是R将参数名里的-识别为减法运算符,同时代码里还有一个小问题:query列表外层多套了c(),会破坏参数结构,需要一并修正。

修正方法

对于包含特殊字符(如-、空格)的参数名,有两种合法的命名方式:

1. 用双引号包裹参数名

直接把带特殊字符的参数名放在双引号里,R就会将其作为完整的名称处理:

"SRegião_Metropolitana_-_RIDE" = "TODAS_AS_CATEGORIAS__"

2. 用反引号包裹参数名

反引号是R中处理特殊命名的常用方式,同样可以避免运算符识别问题:

`SRegião_Metropolitana_-_RIDE` = "TODAS_AS_CATEGORIAS__"

修改后的完整代码

url <- "http://tabnet.datasus.gov.br/cgi/deftohtm.exe?ibge/cnv/popsvsbr.def"

query <- list(
  Linha = "Município", 
  Coluna = "Faixa_Etária_2", 
  Incremento = "População_residente", 
  Arquivos = "pop21.dbf", 
  SRegião = "TODAS_AS_CATEGORIAS__", 
  pesqmes2 = "Digite+o+texto+e+ache+fácil", 
  SUnidade_da_Federação = "25", 
  pesqmes3 = "Digite+o+texto+e+ache+fácil", 
  SMunicípio = "TODAS_AS_CATEGORIAS__", 
  pesqmes4 = "Digite+o+texto+e+ache+fácil", 
  SCapital = "TODAS_AS_CATEGORIAS__", 
  pesqmes5 = "Digite+o+texto+e+ache+fácil", 
  SRegião_de_Saúde = "TODAS_AS_CATEGORIAS__", 
  pesqmes6 = "Digite+o+texto+e+ache+fácil", 
  SMacrorregião_de_Saúde = "TODAS_AS_CATEGORIAS__", 
  pesqmes7 = "Digite+o+texto+e+ache+fácil", 
  SMicrorregião_IBGE = "TODAS_AS_CATEGORIAS__", 
  pesqmes8 = "Digite+o+texto+e+ache+fácil", 
  "SRegião_Metropolitana_-_RIDE" = "TODAS_AS_CATEGORIAS__", 
  pesqmes9 = "Digite+o+texto+e+ache+fácil", 
  STerritório_da_Cidadania = "TODAS_AS_CATEGORIAS__", 
  pesqmes10 = "Digite+o+texto+e+ache+fácil", 
  SMacrorregião_PNDR = "TODAS_AS_CATEGORIAS__", 
  SAmazônia_Legal = "TODAS_AS_CATEGORIAS__", 
  SSemiárido = "TODAS_AS_CATEGORIAS__", 
  SFaixa_de_Fronteira = "TODAS_AS_CATEGORIAS__", 
  SZona_de_Fronteira = "TODAS_AS_CATEGORIAS__", 
  SMunicípio_de_extrema_pobreza = "TODAS_AS_CATEGORIAS__", 
  SSexo = "TODAS_AS_CATEGORIAS__", 
  pesqmes17 = "Digite+o+texto+e+ache+fácil", 
  SFaixa_Etária_1 = "TODAS_AS_CATEGORIAS__", 
  pesqmes18 = "Digite+o+texto+e+ache+fácil", 
  SFaixa_Etária_2 = "TODAS_AS_CATEGORIAS__", 
  formato = "prn", 
  mostre = "Mostra"
)

page <- httr::GET(url = url, query = query) |>
  getElement("content") |>
  rawToChar()

说明:代码中移除了list()外层的c(),因为c()会将列表转换为向量,导致httr::GET无法正确解析请求参数结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 14:15:13