
Para pesquisas, análises de mercado ou simplesmente por curiosidade, a coleta e extração de dados na web tornaram-se ferramentas indispensáveis nos dias de hoje. A linguagem de programação Python desempenha um papel significativo, facilitando grandemente essas tarefas. No entanto, para os iniciantes, esse processo pode parecer desafiador.
Neste tutorial, vamos criar juntos uma automatização para coleta de dados utilizando a linguagem Python. Não nos limitaremos apenas à coleta; estaremos explorando também a extração de dados de um arquivo ZIP hospedado na web.
Com passos simples e transparentes, você será capaz de automatizar a coleta e extração de arquivos, tornando essas tarefas parte integrante do seu dia a dia. Ao concluir este tutorial, a automação se transformará em sua aliada confiável, simplificando suas tarefas diárias de maneira eficaz e descomplicada.
Vamos lá?
Sumário do Conteúdo
Bibliotecas Necessárias
O ponto inicial consiste na instalação das bibliotecas essenciais para o desenvolvimento deste projeto. As seguintes ferramentas serão empregadas
os
:- Essa biblioteca fornece funcionalidades relacionadas ao sistema operacional. No contexto do código, o módulo
os
pode ser utilizado para realizar operações como manipulação de diretórios e caminhos de arquivos.
- Essa biblioteca fornece funcionalidades relacionadas ao sistema operacional. No contexto do código, o módulo
requests
:- A biblioteca
requests
é amplamente utilizada para realizar requisições HTTP. No código, ela pode ser empregada para baixar arquivos da web, sendo fundamental para a coleta de dados online.
- A biblioteca
zipfile
:- O módulo
zipfile
permite trabalhar com arquivos ZIP. Ele desempenha um papel crucial no processo de extração dos dados contidos no arquivo ZIP baixado, garantindo que a automação seja completa e eficiente.
- O módulo
Importação das Bibliotecas no Python
Para efetuar a importação das bibliotecas necessárias, utilize o código fornecido abaixo. Se não estiver familiarizado com o processo de instalação de bibliotecas, clique aqui para obter orientações passo a passo.
import os
import requests
import zipfile
Sobre a Base de Dados
Com as bibliotecas devidamente instaladas, o próximo passo é acessar o link web no qual o arquivo está armazenado. Neste tutorial, utilizaremos os dados disponíveis nesse link. O arquivo abriga uma base fictícia que simula os resultados de uma pesquisa, buscando entender as preferências dos participantes em relação a uma variedade de temas, como hobbies, animais, clima e bebidas. Abaixo segue uma prévia do arquivo descompactado.

A pesquisa está organizada por dia, significando que cada dia inclui uma entrevista contendo um ou mais participantes. Este arquivo engloba um total de 363 pesquisas conduzidas ao longo do ano de 2020.
Acessando a URL
Compreendida a estrutura da base de dados, o próximo passo consiste em criar uma requisição por meio da URL para acessar e coletar os dados. Utilize o código abaixo para isso
url = 'https://github.com/ProfLeandroLessa/classroom-datasets/raw/master/CDD/TP/pesquisa_preferencias.zip'
response = requests.get(url)
Temos:
- Definição da URL:
- A variável
url
contém o endereço da web de onde o arquivo ZIP será baixado.
- A variável
- Requisição HTTP:
- A função
requests.get(url)
é utilizada para realizar uma requisição HTTP para a URL especificada, e a resposta é armazenada na variávelresponse
.
- A função
Verificando e Criando o Diretório de Armazenamento
Após efetuar a requisição da URL no site, é crucial verificar seu status para validar sua integridade e criar o caminho onde os dados serão armazenados. Neste tutorial, pressupomos que a pasta ‘dados_pesquisa’ já está previamente criada no diretório C:. Contudo, caso deseje aprender a criar a pasta automaticamente, clique aqui.
diretorio_destino = 'C:\dados_pesquisa'
if response.status_code == requests.codes.OK:
nome_arquivo_zip = url.split('/')[-1]
caminho_arquivo_zip = os.path.join(diretorio_destino, nome_arquivo_zip)
Assim temos:
- Definição do Diretório de Destino:
- A variável
diretorio_destino
indica o local no sistema de arquivos onde o arquivo ZIP será salvo após o download. Nesse caso o diretório é uma pasta armazenada no diretório C: do Windows.
- A variável
- Verificação de Resposta Bem-sucedida:
- O código verifica se a resposta da requisição possui o código de status HTTP 200 (OK), indicando que a requisição foi bem-sucedida.
- Extração do Nome do Arquivo e Definição do Caminho do Arquivo ZIP:
- Se a resposta foi bem-sucedida, o código extrai o nome do arquivo ZIP da URL (parte após a última barra) e, em seguida, cria o caminho completo do arquivo ZIP utilizando
os.path.join(diretorio_destino, nome_arquivo_zip)
. - Neste contexto, o nome do arquivo é combinado ao diretório de armazenamento. Como exemplo, o caminho completo para o arquivo destino seria:
C:\dados_pesquisa\pesquisa_preferencias.zip
.
- Se a resposta foi bem-sucedida, o código extrai o nome do arquivo ZIP da URL (parte após a última barra) e, em seguida, cria o caminho completo do arquivo ZIP utilizando
Realizando o Download do Arquivo
Com o diretório de destino devidamente configurado, o próximo passo é realizar o download do arquivo. Utilize o código abaixo para executar essa operação.
with open(caminho_arquivo_zip, 'wb') as arquivo:
arquivo.write(response.content)
print("Donwload finalizado. Salvo em: {}".format(caminho_arquivo_zip))
Aqui temos:
- Abertura e Escrita do Arquivo:
- O código abre um arquivo no caminho especificado (
caminho_arquivo_zip
) no modo de escrita binária ('wb'
). - O conteúdo da resposta HTTP (
response.content
), que é o conteúdo binário do arquivo ZIP, é então gravado nesse arquivo recém-aberto.
- O código abre um arquivo no caminho especificado (
- Impressão do Status do Download:
- Após a escrita bem-sucedida do arquivo, uma mensagem é impressa indicando que o download foi concluído e especificando o local onde o arquivo foi salvo (
caminho_arquivo_zip
).
- Após a escrita bem-sucedida do arquivo, uma mensagem é impressa indicando que o download foi concluído e especificando o local onde o arquivo foi salvo (
Descompactando o Arquivo
Com o arquivo devidamente baixado no seu diretório, o próximo e último passo consiste em realizar a extração do seu conteúdo. Utilize o código abaixo para realizar esta operação.
with zipfile.ZipFile(caminho_arquivo_zip, 'r') as zip_ref:
zip_ref.extractall(diretorio_destino)
print(f"Arquivo ZIP descompactado em: {diretorio_destino}")
- Abertura e Extração do Arquivo ZIP
- Nesta seção, um contexto
with
é utilizado para garantir a correta manipulação do arquivo ZIP. O arquivo ZIP especificado emcaminho_arquivo_zip
é aberto no modo de leitura ('r'
). - Em seguida, o método
extractall
é aplicado ao objetoZipFile
(zip_ref
), descompactando todos os arquivos do arquivo ZIP para o diretório fornecido emdiretorio_destino
.
- Nesta seção, um contexto
- Impressão do Status da Extração:
- Após a extração bem-sucedida, uma mensagem é impressa indicando que o arquivo ZIP foi descompactado com sucesso. O caminho do diretório onde os arquivos foram extraídos (
diretorio_destino
) é incluído na mensagem para fornecer informações sobre a localização dos dados recém-extraídos.
- Após a extração bem-sucedida, uma mensagem é impressa indicando que o arquivo ZIP foi descompactado com sucesso. O caminho do diretório onde os arquivos foram extraídos (
Pronto! Agora, todos os arquivos foram descompactados e estão devidamente armazenados no diretório.
Conclusão
Este tutorial realizou a automação da coleta e descompactação de dados a partir de um arquivo ZIP hospedado na web. Desde a validação da URL até o download, armazenamento e descompactação eficiente, cada passo foi detalhadamente explorado. Ao empregar as bibliotecas requests
e zipfile
em conjunto com o Python, agora você está tem conhecimentos práticos para simplificar tarefas rotineiras de manipulação de dados.
Incorporar essas habilidades ao seu repertório oferece um caminho mais ágil e eficiente na jornada da coleta de dados, capacitando-o a explorar informações valiosas com facilidade. Experimente adaptar esses conceitos aos seus projetos específicos e aproveite os benefícios da automação na gestão de dados.
Se este conteúdo foi útil e você deseja automatizar a extração em tempo de execução ou explorar outras melhorias, clique aqui.
Compartilhe essa dica com seus amigos que podem se dar bem com essas estratégias de automação. A jornada para gerenciar dados de forma eficiente está só começando. Aproveite cada descoberta! 🚀