MCPcopy Index your code
hub / github.com/PostmonAPI/postmon / IbgeTracker

Class IbgeTracker

IbgeTracker.py:8–99  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6
7
8class IbgeTracker():
9
10 def __init__(self):
11 self.url_ufs = 'http://www.ibge.gov.br/home/geociencias' + \
12 '/areaterritorial/principal.shtm'
13 self.url_cidades = 'http://www.ibge.gov.br/home/geociencias' + \
14 '/areaterritorial/area.php?nome=%'
15
16 def _request(self, url):
17 response = requests.post(url)
18 response.raise_for_status()
19 return response.text
20
21 def _get_info_ufs(self, siglas):
22 texto = self._request(self.url_ufs)
23 html = fromstring(texto)
24 seletorcss_linhas = "div#miolo_interno > table > tr"
25 linhas = html.cssselect(seletorcss_linhas)
26 linhas.pop() # a primeira é o cabeçalho
27 infos = []
28 for linha in linhas:
29 seletorcss_celulas = "td"
30 celulas = linha.cssselect(seletorcss_celulas)
31 codigo_ibge = celulas[0].text_content()
32 if codigo_ibge in siglas:
33 sigla = siglas[codigo_ibge]
34 infos.append({
35 'sigla': sigla,
36 'codigo_ibge': codigo_ibge,
37 'nome': celulas[1].text_content(),
38 'area_km2': celulas[2].text_content()
39 })
40
41 # neste ponto, após a carga
42 # das cidades, a lista
43 # 'infos' deve estar populada
44
45 return infos
46
47 def _get_info_cidades(self):
48 texto = self._request(self.url_cidades)
49 html = fromstring(texto)
50 seletorcss_linhas = "div#miolo_interno > table > tr"
51 linhas = html.cssselect(seletorcss_linhas)
52 linhas.pop() # a primeira é o cabeçalho
53 infos = []
54 for linha in linhas:
55 seletorcss_celulas = "td"
56 celulas = linha.cssselect(seletorcss_celulas)
57 infos.append({
58 'codigo_ibge_uf': celulas[0].text_content(),
59 'sigla_uf': celulas[1].text_content(),
60 'codigo_ibge': celulas[2].text_content(),
61 'nome': celulas[3].text_content(),
62 'area_km2': celulas[4].text_content()
63 })
64 return infos
65

Callers 2

track_ibgeFunction · 0.90
_standaloneFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected