Skip to content

Instantly share code, notes, and snippets.

@huogerac
Created February 21, 2020 22:24
Show Gist options
  • Save huogerac/df8991a8f5cd4aff31f80d10357e1a5e to your computer and use it in GitHub Desktop.
Save huogerac/df8991a8f5cd4aff31f80d10357e1a5e to your computer and use it in GitHub Desktop.
def cep_json_xml(cep, formato):
cepEntrada = cep
tipoCep =""
cepTemp =""
metodo ="buscarCep"
formato = formato.lower()
url = 'http://m.correios.com.br/movel/buscaCepConfirma.do'
post_data_dictionary = {'cepEntrada': cepEntrada, 'tipoCep': tipoCep, 'cepTemp': cepTemp, 'metodo':metodo}
#codifica os dados POST para ser enviado em uma URL
post_data_encoded = urllib.urlencode(post_data_dictionary)
try:
#objeto request que armazena os dados do POST e da URL
request_object = urllib2.Request(url, post_data_encoded)
#faz o request usando o objeto request como um argumento e armazena a resposta em uma variavel
response = urllib2.urlopen(request_object)
#armazena a resposta em uma string
result = response.read()
#extrair dados de arquivos HTML (result)
soup = BeautifulSoup(result)
#seleciona as tags com essas classes
values = soup.select(".caixacampobranco span.respostadestaque ")
if len(values) > 2:
resultado=1
resultado_txt = "Sucesso cep completo"
#remove outras informacoes que vem junto ao logradouro. Exemplo: - de 1000 a 2000 e impar
logradouro = (values[0].text.strip()).split('-')
logradouro = logradouro[0]
#extrai os valores das tags
bairro = values[1].text.strip()
cidade_estado = values[2].text.split()
cidade = cidade_estado[0]
estado = cidade_estado[1].strip('/')
cep = values[3].text.strip()
elif len(values) < 2:
resultado=2
resultado_txt = "Sucesso cep unico"
logradouro = ""
bairro = ""
cidade_estado = values[0].get_text().split()
cidade = cidade_estado[0]
estado = cidade_estado[1].strip('/')
cep = values[1].get_text().strip()
else:
resultado_txt = "Servico indisponivel ou cep invalido"
except:
exc_type, exc_obj, exc_tb = sys.exc_info()
file = exc_tb.tb_frame.f_code.co_filename
retorno = json.dumps({'msg': 'type: %s, error: %s, file: %s, line %s' % (exc_type, exc_obj, file, exc_tb.tb_lineno)})
return retorno,formato
dict_json = {'resultado': resultado,
'resultado_txt': resultado_txt,
'logradouro' :logradouro,
'bairro': bairro,
'cidade': cidade,
'uf': estado,
'cep':cep}
if formato == 'json':
retorno = json.dumps(dict_json)
elif formato == 'xml':
retorno = open(os.path.join(os.path.dirname(__file__), 'cep.xml'),'r').read()%dict_json
else:
retorno = "Opcao nao existe"
return retorno,formato
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment