示例#1
0
 def _download(self):
     nome_arquivo = self.nome_dados + '.json'
     downloader = FileDownloader(self.diretorio, self.url, nome_arquivo)
     downloader.download()
     diretorio = downloader.diretorio_dados
     nome_arquivo = downloader.nome_arquivo
     return diretorio, nome_arquivo
示例#2
0
    def parse(self):
        """
        Executa o parsing do arquivo JSON.  Executa o download de um arquivo de dados em formato JSON e armazena as
        informações resultantes em um local identificado de acordo com as informações recebidas pelo construtor da
        classe.
        :return:
        """
        nome_arquivo = self.nome_dados + '.json'
        downloader = FileDownloader(self.diretorio, self.url, nome_arquivo)
        downloader.download()

        with open(
                os.path.join(downloader.diretorio_dados,
                             downloader.nome_arquivo)) as json_file:
            dados = json.load(json_file)
            conteudo = dados['data']['rows']
            colunas = dados['data']['cols']
            colunas_df = []

            for coluna in colunas:
                colunas_df.append(coluna['name'])

            linhas_df = []

            for elemento in conteudo:
                linhas_df.append(elemento)

            df = pd.DataFrame(linhas_df, columns=colunas_df)

            persistir(df, self.fonte, self.nome_dados, self.uf)
示例#3
0
 def scrap(self):
     logger = logging.getLogger('covidata')
     logger.info('Portal de transparência da capital...')
     start_time = time.time()
     downloader = FileDownloader(path.join(config.diretorio_dados, 'SP', 'portal_transparencia'), self.url,
                                 'COVID.csv')
     downloader.download()
     logger.info("--- %s segundos ---" % (time.time() - start_time))
示例#4
0
 def scrap(self):
     logger = logging.getLogger('covidata')
     logger.info('Tribunal de contas estadual...')
     start_time = time.time()
     tce = FileDownloader(path.join(config.diretorio_dados, 'RS', 'tce'),
                          config.url_tce_RS, 'licitações_-_covid-19.xls')
     tce.download()
     logger.info("--- %s segundos ---" % (time.time() - start_time))
示例#5
0
 def scrap(self):
     logger = logging.getLogger('covidata')
     logger.info('Portal de transparência estadual...')
     start_time = time.time()
     pt_ES = FileDownloader(
         path.join(config.diretorio_dados, 'ES', 'portal_transparencia'),
         config.url_pt_ES, 'dados-contratos-emergenciais-covid-19.csv')
     pt_ES.download()
     logger.info("--- %s segundos ---" % (time.time() - start_time))
示例#6
0
 def scrap(self):
     logger = logging.getLogger('covidata')
     logger.info('Portal de transparência estadual...')
     start_time = time.time()
     pt_CE = FileDownloader(
         path.join(config.diretorio_dados, 'CE', 'portal_transparencia'),
         config.url_pt_CE, 'gasto_covid_dados_abertos.xlsx')
     pt_CE.download()
     logger.info("--- %s segundos ---" % (time.time() - start_time))
示例#7
0
 def scrap(self):
     logger = logging.getLogger('covidata')
     logger.info('Portal de transparência da capital...')
     start_time = time.time()
     pt_Florianopolis = FileDownloader(
         path.join(config.diretorio_dados, 'SC', 'portal_transparencia', 'Florianopolis'),
         config.url_pt_Florianopolis, 'aquisicoes.csv')
     pt_Florianopolis.download()
     logger.info("--- %s segundos ---" % (time.time() - start_time))
示例#8
0
 def scrap(self):
     logger = logging.getLogger('covidata')
     logger.info('Portal de transparência da capital...')
     start_time = time.time()
     pt_Rio_contratos = FileDownloader(
         path.join(config.diretorio_dados, 'RJ', 'portal_transparencia',
                   'Rio de Janeiro'), config.url_pt_Rio_contratos,
         'Open_Data_Contratos_Covid19_2020.xlsx')
     pt_Rio_contratos.download()
     logger.info("--- %s segundos ---" % (time.time() - start_time))
示例#9
0
 def scrap(self):
     logger = logging.getLogger('covidata')
     logger.info('Portal de transparência da capital...')
     start_time = time.time()
     pt_Rio_despesas_por_ato = FileDownloader(
         path.join(config.diretorio_dados, 'RJ', 'portal_transparencia',
                   'Rio de Janeiro'), config.url_pt_Rio_despesas_por_ato,
         '_arquivos_Open_Data_Desp_Ato_Covid19_2020.txt')
     pt_Rio_despesas_por_ato.download()
     logger.info("--- %s segundos ---" % (time.time() - start_time))
示例#10
0
    def scrap(self):
        csv_zip = 'DISPENSAS_INEXIGIBILIDADE_COVID-2020_CSV.zip'
        diretorio = config.diretorio_dados.joinpath('PR').joinpath(
            'portal_transparencia')

        downloader = FileDownloader(diretorio, config.url_pt_PR, csv_zip)
        downloader.download()

        with zipfile.ZipFile(diretorio.joinpath(csv_zip), 'r') as zip_ref:
            zip_ref.extractall(diretorio)
示例#11
0
    def scrap(self):
        logger = logging.getLogger('covidata')
        logger.info('Portal de transparência da capital...')
        start_time = time.time()

        downloader = FileDownloader(
            path.join(config.diretorio_dados, 'AM', 'portal_transparencia',
                      'Manaus'), self.url,
            'PÚBLICA-CONTROLE-PROCESSOS-COMBATE-COVID-19-MATERIAIS.csv')
        downloader.download()
        logger.info("--- %s segundos ---" % (time.time() - start_time))
示例#12
0
    def scrap(self):
        logger = logging.getLogger('covidata')

        logger.info('Portal de transparência da capital...')
        start_time = time.time()

        pt_BeloHorizonte = FileDownloader(
            path.join(config.diretorio_dados, 'MG', 'portal_transparencia',
                      'Belo Horizonte'), config.url_pt_BeloHorizonte,
            'contratacaocorona.xlsx')
        pt_BeloHorizonte.download()

        logger.info("--- %s segundos ---" % (time.time() - start_time))
示例#13
0
    def _executar(self):
        input_exercicio = self.driver.find_element_by_name('exercicio')
        input_exercicio.send_keys('2020')
        select = Select(self.driver.find_element_by_name('uo'))
        textos = [option.text for option in select.options]

        for i, texto in enumerate(textos):
            if i >= 1:
                select.select_by_visible_text(texto)
                self.driver.find_element_by_tag_name('button').click()
                html = self.driver.page_source
                soup = BeautifulSoup(html, 'html.parser')
                link = soup.find('a', {'title': 'XLS'})

                if link:
                    url = link['href']
                    diretorio = path.join(config.diretorio_dados, 'RR',
                                          'portal_transparencia')
                    nome_arquivo = 'arquivo' + str(i) + '.xls'
                    status_code = FileDownloader(diretorio, url,
                                                 nome_arquivo).download()

                    if status_code == 200:
                        self.arquivos.append(path.join(diretorio,
                                                       nome_arquivo))

                self.driver.back()
                input_exercicio = self.driver.find_element_by_name('exercicio')
                input_exercicio.send_keys('2020')
                select = Select(self.driver.find_element_by_name('uo'))
示例#14
0
    def scrap(self):
        logger = logging.getLogger('covidata')
        logger.info('Portal de transparência da capital...')
        start_time = time.time()

        page = requests.get(self.url)
        soup = BeautifulSoup(page.content, 'html.parser')
        div = soup.findAll("div", {"class": "module-content"})[0]
        itens = div.find_all('ul')[0].find_all('li')

        paginas_csv = self.__get_paginas(itens)

        for pagina in paginas_csv:
            parsed_uri = urlparse(self.url)
            result = '{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri)
            page = requests.get(result + pagina)
            soup = BeautifulSoup(page.content, 'html.parser')
            ul = soup.findAll('ul', {'class': 'dropdown-menu'})[0]
            link = ul.find_all('li')[1].find_all('a')[0].attrs['href']
            diretorio = path.join(config.diretorio_dados, 'PE',
                                  'portal_transparencia', 'Recife')
            FileDownloader(diretorio, link,
                           link[link.rindex('/') + 1:len(link)]).download()

        logger.info("--- %s segundos ---" % (time.time() - start_time))
示例#15
0
    def scrap(self):
        logger = logging.getLogger('covidata')

        logger.info('Portal de transparência estadual...')

        page = requests.get(self.url)
        soup = BeautifulSoup(page.content, 'html.parser')
        links = soup.find_all('a')
        p = re.compile(r'.*compras.+.csv')
        links = [
            link.attrs['href'] for link in links if p.match(link.attrs['href'])
            and not 'itens' in link.attrs['href']
        ]
        diretorio = config.diretorio_dados.joinpath('MS').joinpath(
            'portal_transparencia')

        if not path.exists(diretorio):
            os.makedirs(diretorio)

        for link in links:
            indice = link.rfind('/')
            downloader = FileDownloader(diretorio, link, link[indice + 1:])
            downloader.download()
示例#16
0
    def scrap(self):
        logger = logging.getLogger('covidata')
        logger.info('Portal de transparência distrital...')
        start_time = time.time()
        agora = datetime.datetime.now()
        mes_atual = str(agora.month)

        if int(mes_atual) < 10:
            mes_atual = '0' + mes_atual

        FileDownloader(
            os.path.join(config.diretorio_dados, 'DF', 'portal_transparencia'),
            config.url_pt_DF + mes_atual + '/PLANILHA-COVID2.csv',
            'PLANILHA-COVID2.csv').download()
        logger.info("--- %s segundos ---" % (time.time() - start_time))
示例#17
0
 def scrap(self):
     pt_contratacoes = FileDownloader(
         path.join(config.diretorio_dados, 'PR', 'portal_transparencia',
                   'Curitiba'), config.url_pt_Curitiba_contratacoes,
         'licitacoes_contratacoes.csv')
     pt_contratacoes.download()