TUDO SOBRE EAD

Coloque o seu email aqui para receber gratuitamente as atualizações do blog!

Automatizando tarefas com web crawlers – Mechanize


robot

Automatizar processos é algo do dia-a-dia do programador, não só se tratando do produto principal de uma empresa ou de um sistema, mas também atividades repetitivas e cansativas.

O Problema

Imagine que um cliente tenha um e-commerce, mas que não esteja satisfeito com o sistema atual e peça para sua empresa um e-commerce melhor e que atenda melhor as suas necessidades. Tudo vai muito bem enquanto você desenvolve o sistema novo, usando as tecnologias mais atuais. De repente o cliente entra em contato e surge uma nova tarefa. Você vai ter que migrar seus produtos, mas por algum motivo o cliente não tem como te repassar as imagens diretamente, e nem a associação correta com os produtos. Como realizar essa tarefa? Ir de página em página no sistema antigo e baixar imagem por imagem é muito cansativo, trabalhoso, e não parece ser uma boa ideia. É aí que entra uma das utilidades de um web crawler.

A solução

Um web crawler é um script com o objetivo de “rastejar” ou “passear” por páginas web, com muitas funcionalidades, como indexar páginas novas (Google), salvar imagens, salvar arquivos, ou simplesmente fazer raspagem de dados (Web scrapping).

Existem muitas maneiras de se criar um crawler utilizando bibliotecas prontas disponíveis. Alguns exemplos são o framework Scrapy, feito em Python, o crawler4j em Java, e o Mechanize e Watir, que são bibliotecas Ruby.

Apresentando o Mechanize

Em uma certa ocasião, para auxiliar na migração de dados do cliente, já precisei utilizar um web crawler. Um sistema antigo contava com diversos arquivos pdf. Dado que existiam inúmeros cursos e que precisaria baixar todos os arquivos de cada curso, automatizei este processo utilizando o Mechanize.

O mechanize está disponível como uma gem, então para baixa-lo basta executar o seguinte comando:

Após isto, em um arquivo ruby ou diretamente pelo interpretador, é preciso incluir as classes da biblioteca

Feito isto, você pode instanciar um objeto da classe Mechanize, e em seguida passar uma URL.

O código abaixo cria um objeto page, e roda um loop exibindo todos atributos href dos links da página.

Existem outros métodos para o objeto page, para mostrar ou capturar as imagens, capturar elementos DOM ou até mesmo preencher formulários.

O Mechanize porém tem algumas desvantagens. Se por exemplo for necessário se utilizar de JavaScript para chegar a certas páginas, o Mechanize vai falhar, pois o script é executado sem o navegador.

Nos próximos capítulos…

Este foi um simples exemplo. Se estiver mais curioso de como se utilizar da biblioteca para automatizar tarefas, a melhor maneira de aprender, jovem Padawan, é sujando as mãos com código, então mãos à obra!

Nos próximos posts apresentarei novas bibliotecas. Fique antenado!

 

ActiveRecord - Otimizando consultas com subqueries
Como abraçamos o ES6 em nossas aplicações - Parte 1

Conteúdo VIP

Coloque o seu email abaixo para receber gratuitamente as atualizações do blog!

Sobre Hugo Tamaki

Desenvolvedor do time de projetos do Edools. Amante de tecnologia, games e podcasts. Adora programar, e além do trabalho, também se engaja em projetos pessoais com temáticas nerds. Por ironia do destino, formado em um curso à distância - Tecnologia em Sistemas de Computação EAD / UFF.
Ver todos os posts de Hugo Tamaki

Comentários (3)


  1. 19/06/2015 às 02:20

    algum tutorial que ensine a motar um webcrawler em portugues?

  2. Pingback: gestational diabetes casserole recipes

Deixe uma resposta