Wanhenri / duvida_flask_react

0 stars 0 forks source link

Buscar codigo_da_localidade na API INPE #8

Closed Wanhenri closed 4 years ago

Wanhenri commented 4 years ago

Para fazer uso da API do INPE com buscas a partir do codigo_da_localidade, requer um código que se inicia em 220. Porém, até o momento não se tinha o conhecimento de onde poderia buscar esse código. Com a abertura da issue #7 , verificou-se que no link todos os códigos utilizados no codigo_da_localidade.

Atividade:

Wanhenri commented 4 years ago

Foi construido um código simples em Python para verificar os dados dentro do arquivo .xml do link (http://servicos.cptec.inpe.br/XML/cidade/244/previsao.xml).

import json
import requests
from xml.etree import ElementTree

class prevInpe:
    def get_prevInpe(self,codigo):
        response_forecast = requests.get(
            'http://servicos.cptec.inpe.br/XML/cidade/' + str(codigo) + '/previsao.xml')

        prevCapitais = ElementTree.fromstring(response_forecast.content)     

        return prevCapitais

inpe_reports = prevInpe()
codigo = 244
for codigo in range(244,250,1):
    a = inpe_reports.get_prevInpe(codigo)
    for dia, tempo in zip(a.iter('dia'),a.iter('tempo')):
        print ("codigo", codigo, dia.tag, dia.text, tempo.tag, tempo.text)

output:

244 dia 2020-01-28 tempo pn
244 dia 2020-01-29 tempo pt
244 dia 2020-01-30 tempo pt
244 dia 2020-01-31 tempo pc

Assim já consigo visualizar os dados contidos dentro do arquivo .xml link repl

Wanhenri commented 4 years ago

Criado uma outra parte do código que já consigo imprimir codigo, nome, dia, tempo.

import json
import requests
from xml.etree import ElementTree

class prevInpe:
    def get_prevInpe(self,codigo):
        response_forecast = requests.get(
            'http://servicos.cptec.inpe.br/XML/cidade/' + str(codigo) + '/previsao.xml')

        prevCapitais = ElementTree.fromstring(response_forecast.content)       
        return prevCapitais

inpe_reports = prevInpe()

# ultimo código é 5903
codigo = 244
for codigo in range(244,250,1):
    a = inpe_reports.get_prevInpe(codigo)
    for dia, tempo, nome in zip(a.iter('dia'),a.iter('tempo'), a.iter('nome')):
        print ("codigo", codigo, nome.text, dia.tag, dia.text, tempo.tag, tempo.text)
Wanhenri commented 4 years ago

Scritp utilizado para extrair e salvar, em arquivo texto, cidade e códigos utilizados na API do INPE.

import requests
from xml.etree import ElementTree
import json

class prevInpe:
    def get_prevInpe(self,codigo):
        response_forecast = requests.get(
            'http://servicos.cptec.inpe.br/XML/cidade/' + str(codigo) + '/previsao.xml')

        prevCapitais = ElementTree.fromstring(response_forecast.content)     

        return prevCapitais

with open('vr_vm.txt', 'w') as f:
  inpe_reports = prevInpe()
  codigo = 244
  for codigo in range(220,5904,1):
    a = inpe_reports.get_prevInpe(codigo)
    for dia, tempo, nome in zip(a.iter('dia'),a.iter('tempo'), a.iter('nome')):
        n  = nome.text
        c  = codigo 
        #f.write('%s %s %s %s %s %s\n' % ( str(n), str(c), str(d1), str(d2), str(t1), str(t2)))
        f.write('%s %s \n' % ( str(n), str(c)))