Oi pessoal,
Estou tentando fazer um scrapping do site da Consulta Anvisa e não consigo o resultado esperado.
A ideia é entrar nesse site
Buscar um cnpj (p.ex: 46070868003699)
E pegar a lista retornada em json
O que fiz foi:
library(httr)
url <- "https://consultas.anvisa.gov.br/#/saude/"
lista <- list(
"count" = 10,
"filter[cnpj]" = 46070868003699,
"page" = 1
)
resposta <- httr::POST(
url = url,
body = lista,
encode = "json"
)
resposta
#> Response [https://consultas.anvisa.gov.br/#/saude/]
#> Date: 2022-07-31 21:21
#> Status: 200
#> Content-Type: text/html
#> Size: 15.6 kB
#> <!doctype html>
#> <html class="no-js">
#> <head>
#> <meta charset="utf-8">
#> <meta http-equiv="X-UA-Compatible" content="IE=9">
#> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
#> <title>Consultas - Agência Nacional de Vigilância Sanitária</title>
#> <meta name="description" content="">
#> <meta name="viewport" content="width=device-width">
#>
#> ...
Created on 2022-07-31 by the reprex package (v2.0.1)
Podem me ajudar?
clente
Agosto 1, 2022, 1:52pm
2
Bruno,
Analisando as chamadas do site, notei que alguns detalhes da sua requisição não batem com o original. Em primeiro lugar, a requisição que você quer é feita para outro URL. Além disso, ela é um GET, não um POST. Veja abaixo os request headers :
GET /api/consulta/saude?count=10&filter%5Bcnpj%5D=46070868003699&page=1 HTTP/1.1
Host: consultas.anvisa.gov.br
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://consultas.anvisa.gov.br/
If-Modified-Since: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache
Pragma: no-cache
Authorization: Guest
DNT: 1
Connection: keep-alive
Cookie: _TRAEFIK_BACKEND=http://10.0.16.84:8080; FGTServer=77E1DC77AE2F953D7ED796A08A630A01A53CF6FE5FD0E106412591871F9A9BBCFBDEA0AD564FD89D3BDE827B200B
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Na primeira linha você pode perceber que a URL da API é https://consultas.anvisa.gov.br/api/consulta/saude
e que a requisição foi feita via GET. Se Tentarmos alterar só isso no seu código, entretanto, a requisição ainda não funciona… A saída é tentar adicionar os headers . Depois de muita prática, eu já sei que o provável culpado é o Authorization
e adicioná-lo de fato resolve o problema de uma vez por todas:
# Parâmetros
query <- list(
"count" = 10,
"filter[cnpj]" = 46070868003699,
"page" = 1
)
# Fazer requisição
resp <- httr::GET(
"https://consultas.anvisa.gov.br/api/consulta/saude",
query = query,
httr::add_headers("Authorization" = "Guest")
)
# Estrutura do conteúdo
str(httr::content(resp))
#> List of 9
#> $ content :List of 10
#> ..$ :List of 6
#> .. ..$ processo: chr "250000197069401"
#> .. ..$ empresa :List of 2
#> .. .. ..$ cnpj : chr "46070868003699"
#> .. .. ..$ razaoSocial: chr "LABORATÓRIOS PFIZER LTDA"
#> .. ..$ produto : chr "PARAFUSO MALEOLAR"
#> .. ..$ mensagem:List of 4
#> .. .. ..$ situacao : NULL
#> .. .. ..$ resolucao: NULL
#> .. .. ..$ motivo : NULL
#> .. .. ..$ negativo : logi FALSE
#> .. ..$ registro: chr "11002160001"
#> .. ..$ situacao: chr "Publicado deferimento"
#> ..$ :List of 6
#> .. ..$ processo: chr "250000055939430"
#> .. ..$ empresa :List of 2
#> .. .. ..$ cnpj : chr "46070868003699"
#> .. .. ..$ razaoSocial: chr "LABORATÓRIOS PFIZER LTDA"
#> .. ..$ produto : chr "PARAFUSO ASNIS"
#> .. ..$ mensagem:List of 4
#> .. .. ..$ situacao : NULL
#> .. .. ..$ resolucao: NULL
#> .. .. ..$ motivo : NULL
#> .. .. ..$ negativo : logi FALSE
#> .. ..$ registro: chr "11002160002"
#> .. ..$ situacao: chr "Publicado deferimento"
#> ..$ :List of 6
#> .. ..$ processo: chr "250000063609346"
#> .. ..$ empresa :List of 2
#> .. .. ..$ cnpj : chr "46070868003699"
#> .. .. ..$ razaoSocial: chr "LABORATÓRIOS PFIZER LTDA"
#> .. ..$ produto : chr "DRENO DE SUCCAO PORTO-VAC"
#> .. ..$ mensagem:List of 4
#> .. .. ..$ situacao : NULL
#> .. .. ..$ resolucao: NULL
#> .. .. ..$ motivo : NULL
#> .. .. ..$ negativo : logi FALSE
#> .. ..$ registro: chr "11002160003"
#> .. ..$ situacao: chr "Publicado deferimento"
#> ..$ :List of 6
#> .. ..$ processo: chr "250000063599367"
#> .. ..$ empresa :List of 2
#> .. .. ..$ cnpj : chr "46070868003699"
#> .. .. ..$ razaoSocial: chr "LABORATÓRIOS PFIZER LTDA"
#> .. ..$ produto : chr "CIMENTO OSSEO SIMPLEX"
#> .. ..$ mensagem:List of 4
#> .. .. ..$ situacao : NULL
#> .. .. ..$ resolucao: NULL
#> .. .. ..$ motivo : NULL
#> .. .. ..$ negativo : logi FALSE
#> .. ..$ registro: chr "11002160004"
#> .. ..$ situacao: chr "Publicado deferimento"
#> ..$ :List of 6
#> .. ..$ processo: chr "250000056429362"
#> .. ..$ empresa :List of 2
#> .. .. ..$ cnpj : chr "46070868003699"
#> .. .. ..$ razaoSocial: chr "LABORATÓRIOS PFIZER LTDA"
#> .. ..$ produto : chr "HASTE FEMURAL THOMPSON COM CABECA"
#> .. ..$ mensagem:List of 4
#> .. .. ..$ situacao : NULL
#> .. .. ..$ resolucao: NULL
#> .. .. ..$ motivo : NULL
#> .. .. ..$ negativo : logi FALSE
#> .. ..$ registro: chr "11002160005"
#> .. ..$ situacao: chr "Publicado deferimento"
#> ..$ :List of 6
#> .. ..$ processo: chr "250000056479386"
#> .. ..$ empresa :List of 2
#> .. .. ..$ cnpj : chr "46070868003699"
#> .. .. ..$ razaoSocial: chr "LABORATÓRIOS PFIZER LTDA"
#> .. ..$ produto : chr "GRAMPO IMPLANTAVEL"
#> .. ..$ mensagem:List of 4
#> .. .. ..$ situacao : NULL
#> .. .. ..$ resolucao: NULL
#> .. .. ..$ motivo : NULL
#> .. .. ..$ negativo : logi FALSE
#> .. ..$ registro: chr "11002160006"
#> .. ..$ situacao: chr "Publicado deferimento"
#> ..$ :List of 6
#> .. ..$ processo: chr "250000063579331"
#> .. ..$ empresa :List of 2
#> .. .. ..$ cnpj : chr "46070868003699"
#> .. .. ..$ razaoSocial: chr "LABORATÓRIOS PFIZER LTDA"
#> .. ..$ produto : chr "PROTESE DE OMBRO"
#> .. ..$ mensagem:List of 4
#> .. .. ..$ situacao : NULL
#> .. .. ..$ resolucao: NULL
#> .. .. ..$ motivo : NULL
#> .. .. ..$ negativo : logi FALSE
#> .. ..$ registro: chr "11002160007"
#> .. ..$ situacao: chr "Publicado deferimento"
#> ..$ :List of 6
#> .. ..$ processo: chr "250000055979491"
#> .. ..$ empresa :List of 2
#> .. .. ..$ cnpj : chr "46070868003699"
#> .. .. ..$ razaoSocial: chr "LABORATÓRIOS PFIZER LTDA"
#> .. ..$ produto : chr "COMPONENTE TIBIAL CIMENTADO"
#> .. ..$ mensagem:List of 4
#> .. .. ..$ situacao : NULL
#> .. .. ..$ resolucao: NULL
#> .. .. ..$ motivo : NULL
#> .. .. ..$ negativo : logi FALSE
#> .. ..$ registro: chr "11002160008"
#> .. ..$ situacao: chr "Publicado deferimento"
#> ..$ :List of 6
#> .. ..$ processo: chr "250000078619539"
#> .. ..$ empresa :List of 2
#> .. .. ..$ cnpj : chr "46070868003699"
#> .. .. ..$ razaoSocial: chr "LABORATÓRIOS PFIZER LTDA"
#> .. ..$ produto : chr "COMPONENTE TIBIAL NAO CIMENTADO"
#> .. ..$ mensagem:List of 4
#> .. .. ..$ situacao : NULL
#> .. .. ..$ resolucao: NULL
#> .. .. ..$ motivo : NULL
#> .. .. ..$ negativo : logi FALSE
#> .. ..$ registro: chr "11002160009"
#> .. ..$ situacao: chr "Publicado deferimento"
#> ..$ :List of 6
#> .. ..$ processo: chr "250000078569507"
#> .. ..$ empresa :List of 2
#> .. .. ..$ cnpj : chr "46070868003699"
#> .. .. ..$ razaoSocial: chr "LABORATÓRIOS PFIZER LTDA"
#> .. ..$ produto : chr "PARAFUSO MINI-CORTICAL"
#> .. ..$ mensagem:List of 4
#> .. .. ..$ situacao : NULL
#> .. .. ..$ resolucao: NULL
#> .. .. ..$ motivo : NULL
#> .. .. ..$ negativo : logi FALSE
#> .. ..$ registro: chr "11002160010"
#> .. ..$ situacao: chr "Publicado deferimento"
#> $ totalElements : int 66
#> $ totalPages : int 7
#> $ last : logi FALSE
#> $ numberOfElements: int 10
#> $ first : logi TRUE
#> $ sort : NULL
#> $ size : int 10
#> $ number : int 0
Created on 2022-08-01 by the reprex package (v2.0.1)
1 curtida
Funcionou tudo certo agora! O único problema que tive foi com CNPJs que iniciam com zero, mas coloquei entre aspas e funcionou!
Muito obrigado!