A arte do Web Scraping
Nunca iria imaginar que Web Scraping poderia me ensinar tanto conhecimento novo.
Do Wikipédia: Web Scraping é "uma forma de mineração que permite a extração de dados de sites da web convertendo-os em informação estruturada para posterior análise".
Já realizei coletas utilizando R e Python, embora Python seja mais interessante por conta da programação orientada a objetos, classes e a possibilidade de criar um programa genérico e adicionar particularidades a partir da herança e poliformismo das classes.
Apesar de utilizar o Selenium, um automatizador de navegadores (Google Chrome, Mozilla Firefox, entre outros), em ambas linguagens, a possibilidade de combinar a aplicação de coleta com third-parties como Django (ORM com base de dados, como MySQL ou PostgreSQL) e Celery (paralelização facilitada utilizando o RabbitMQ como hospedeiro das filas) faz a linguagem Python ser ainda mais atraente.
Para facilitar a execução do programa desenvolvido em diferentes máquinas, é possível utilizar um ambiente virtual (via VirtualEnv do Python), porém uma solução mais genérica que permite definir inclusive o sistema operacional, utilizando o conceito de contêineres, é o Docker. Com este software toda a aplicação fica isolada dos processos executados pelo computador, sem bagunçar com instalação de pacotes diversos e softwares que podem acabar sendo utilizados somente uma vez. É uma forma mais organizada e confiável de colocar em produção os aplicativos desenvolvidos, já que todo o ambiente utilizado na criação pode ser replicado.
Aproveitando a onda do momento, ao invés de adquirir computadores dedicados além de funcionários especializados para a manutenção do hardware, é possível utilizar os serviços de Cloud para rodar o programa em questão. Seja Amazon AWS, Google Cloud, Digital Ocean, Microsoft Azure, entre outros, é possível tirar muito proveito dessa possibilidade, principalmente pela praticidade de criação e destruição de máquinas virtuais por linha de comando, um processo que pode ser automatizado. Além dessa vantagem, utilizar máquinas específicas para cada parte do processo de Web Scraping, como base de dados, envio de requisições e coleta efetiva, identificando o uso de HD, memória RAM ou CPU, torna o processo mais econômico.
O ápice da orquestração entre máquinas e contêineres é a nova tecnologia de Kubernetes (K8s). Aqui processos são desvinculados e alocados de maneira automatizada, sendo reiniciados quando necessários e propõem a maior economia em termos de aluguel de máquinas virtuais nos serviços de Cloud.
Isso foi o que aprendi com Web Scraping. Muito desse conhecimento é útil para mais diversas aplicações e programas criados, portanto vale a pena buscar livros e conteúdos que abordam o uso de tais softwares e tecnologias.