Ajuda em como passar os parâmetro Post

5 respostas
phpjavapython
O

Olá Amigos boa tarde tudo bem?

Eu me chamo Rafael e estou fazendo um projeto em que eu preciso extrair os dados de uma determinada página.

Fiz com Java usando selenium funcionar perfeitamente.

Porem queria estimular mais o meu conhecimento e tentar fazer algo sobre requisições.

O link do site é esse.
https://casadosdados.com.br/solucao/cnpj/pesquisa-avancada?id=CkMTdgKboN1lm-ExgjiJjbVLz94hNbNWtaNeIJ8QSDA%3D

Quando você pressionar o botão pesquisar ele faz a chamada a API no link abaixo.
https://api.casadosdados.com.br/v2/public/cnpj/search

e passa os parâmetros, porem fui olhar no form-data e eu não sei como replicar os cabeçalhos em linhas de código.

Já deixei setado os parâmetros que devem ser passado no cabeçalho.

Se alguém conseguir me dar uma lux, fico agradecido.

5 Respostas

L

Teve um post seu que respondi que ele faz exatamente isso. Uma requisição POST passando um body. Basta vc alterar para passar um JSON e setar o header Content-Type como application/json.

O

Fala Grande Lucas tudo bem?

Olha eu enchendo o saco aqui de novo, então aquele modelo que passo funcionou perfeitamente, porem como esse modelo de cabeçalho nunca trabalhei, e como estou aprendendo, não sei nem como passa o JSON.

Mas você já deu o caminho, vou dar uma pesquisada em como passar um JSON em um requests.

L

Cheguei a fazer aqui, porém, parece que o site valida a origem do request, e caso não seja um browser, ela redireciona para uma tela com um captcha:

import requests

body = {
  'extras': {
    'com_contato_telefonico': False,
    'com_email': False,
    'excluir_mei': False,
    'incluir_atividade_secundaria': False,
    'somente_celular': False,
    'somente_filial': False,
    'somente_fixo': False,
    'somente_matriz': False,
    'somente_mei': False
  },
  'query': {
    'atividade_principal': ['4511102'],
    'cep': [],
    'ddd': [],
    'municipio': [],
    'natureza_juridica': [],
    'situacao_cadastral': 'ATIVA',
    'termo': [],
    'uf': ['AM','ES']
  },
  'range_query': {
    'capital_social': {
      'gte': None,
      'lte': None
    },
    'data_abertura': {
      'gte': '2021-08-01',
      'lte': None
    }
  },
  'page': '1'
}

headers = {'Content-type': 'application/json'}

response = requests.post(
  'https://api.casadosdados.com.br/v2/public/cnpj/search', 
  json = body,
  headers = headers
)

print(response.text)
O

Opa com o que passou tentei passar os metodos na requisição mas não fungou não kkk

import requests

body = {

  'extras': {

    'com_contato_telefonico': False,

    'com_email': False,

    'excluir_mei': False,

    'incluir_atividade_secundaria': False,

    'somente_celular': False,

    'somente_filial': False,

    'somente_fixo': False,

    'somente_matriz': False,

    'somente_mei': False

  },

  'query': {

    'atividade_principal': ['4511102'],

    'cep': [],

    'ddd': [],

    'municipio': [],

    'natureza_juridica': [],

    'situacao_cadastral': 'ATIVA',

    'termo': [],

    'uf': ['AM','ES']

  },

  'range_query': {

    'capital_social': {

      'gte': None,

      'lte': None

    },

    'data_abertura': {

      'gte': '2021-08-01',

      'lte': None

    }

  },

  'page': '1'

}

headers = {

    'referer': '',

    'authority': 'api.casadosdados.com.br',

    'method': 'POST',

    'path': '/v2/public/cnpj/search',

    'scheme' : 'https',

    'accept' : 'application/json, text/plain, */*',

    'accept-encoding': 'gzip, deflate, br',

    'accept-language': 'pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7',

    'content-length' : '500',

    'content-type': 'application/json;charset=UTF-8',

    'origin': 'https://casadosdados.com.br',

    'referer': 'https://casadosdados.com.br/',

    'sec-ch-ua': 'Not A;Brand;v=99, Chromium;v=98, Google Chrome;v=98',

    'sec-ch-ua-mobile': '?0',

    'sec-ch-ua-platform': 'Windows',

    'sec-fetch-dest': 'empty',

    'sec-fetch-mode': 'cors',

    'sec-fetch-site': 'same-site',

    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36',

}

response = requests.get(

  'https://api.casadosdados.com.br/v2/public/cnpj/search',

  json = body, headers=headers

)

print(response.status_code)

Se tiver alguma sugestão,

L

Tem essa observação que coloquei na minha resposta.

Criado 15 de fevereiro de 2022
Ultima resposta 15 de fev. de 2022
Respostas 5
Participantes 2