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
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)
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))
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))
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))
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))
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))
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))
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))
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)
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))
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))
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'))
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))
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()
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))
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()