Skip to content

Instantly share code, notes, and snippets.

@duarteguilherme
Created October 22, 2016 18:36
Show Gist options
  • Save duarteguilherme/34e15d91773f43d48076b451c771adf0 to your computer and use it in GitHub Desktop.
Save duarteguilherme/34e15d91773f43d48076b451c771adf0 to your computer and use it in GitHub Desktop.
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
banco = MongoClient().denicola.denicola
url = "http://www.conasems.org.br/conasems_dados/municipios.php?"
estados = [ "AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES",
"GO", "MA", "MG", "MS", "MT", "PA", "PB", "PE",
"PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC",
"SE", "SP", "TO"]
estados = [ i.lower() for i in estados ]
def limpa_dados(pagina):
dados = pagina.find('td').find('font').get_text().strip().split('\n')
dados_return = {}
for k in dados:
if 'Município' in k:
dados_return['municipio'] = k.split(':')[1]
if 'Prefeito' in k:
dados_return['prefeito'] = k.split(':')[1]
if 'Gestor' in k:
dados_return['gestor'] = k.split(':')[1]
if 'Endereço' in k:
dados_return['endereco'] = k.split(':')[1]
if 'Bairro' in k:
dados_return['bairro'] = k.split(':')[1]
if 'CEP' in k:
dados_return['cep'] = k.split(':')[1]
if 'Telefones' in k:
dados_return['telefones'] = k.split(':')[1]
if 'Fax' in k:
dados_return['fax'] = k.split(':')[1]
if 'Institucional 1' in k:
dados_return['email_institucional_1'] = k.split(':')[1]
if 'Pessoal 1' in k:
dados_return['email_pessoal_1'] = k.split(':')[1]
if 'atualização' in k:
dados_return['atualizacao'] = k.split(':')[1]
# Parte da populacao
pop = pagina.find_all('td')
for l in pop:
if 'População estimada' in l.get_text():
prov_pop = l.get_text().strip().split('\n')
prov_pop = [ i.strip() for i in prov_pop ]
dados_return['populacao'] = '#'.join(prov_pop)
return(dados_return)
for i in range(len(estados)):
print("Baixando Estado: " + estados[i])
url_now = ""
url_now = url + "uf=" + estados[i]
pagina = BeautifulSoup(requests.get(url_now).text,'html.parser')
municipios = pagina.find_all('a')
for j in municipios:
if 'municipios_detalhes' not in j['href']:
print(j['href'] + " nao deu certo" )
break
mun_page = BeautifulSoup(requests.get("http://www.conasems.org.br/conasems_dados/" + j['href']).text, 'html.parser')
dados_insert = limpa_dados(mun_page)
dados_insert['nome_mun'] = j.get_text()
print(j.get_text())
banco.insert_one(dados_insert)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment