Introdução e primeiros passos no Scrapy Cloud

Alvaro Leandro Cavalcante Carneiro
Data Hackers
Published in
5 min readJun 25, 2020

Os web crawlers são uma opção bastante interessante para se criar bases de dados a partir da captura de informações presentes em páginas web, sendo bastante útil na fase de coleta de um projeto envolvendo Big Data e Machine Learning, ainda mais com o volume e variedade de dados que conseguimos capturar na internet.

Um dos frameworks mais famosos para se construir esses crawlers é o Scrapy, que não só possui ótimas ferramentas para extrair as informações das páginas de interesse como também tem todo um ecossistema de soluções para promover um projeto de ponta a ponta nessa área. Dito isso, a ideia do artigo é introduzir o Scrapy Cloud utilizado para hospedagem dos spiders.

O que é o Scrapy Cloud

Depois de gastar horas construindo os web bots para pegar as informações corretamente, o próximo passo é hospedar esses bots em algum servidor, para que o mesmo esteja sempre disponível para execução, garantindo uma informação atualizada das fontes.

Entre inúmeras opções de hospedagem disponíveis no mercado, como Google Cloud e AWS, podemos encontrar o Scrapy Cloud, que como o nome sugere é um servidor próprio para a hospedagem de crawlers.

Esse serviço de hospedagem faz parte do scrapy hub, ecossistema com diversos produtos para facilitar o desenvolvimento de web bots robustos e escaláveis.

Vantagens

Uma das vantagens principais de se utilizar o Scrapy Cloud está na sua facilidade de manipulação se comparado a concorrentes como a AWS, uma vez que em poucos minutos é possível hospedar o seu bot sem precisar de conhecimentos específicos, ainda mais se o seu projeto está no GitHub, onde é possível fazer uma integração direta pela branch. Além da facilidade, podemos destacar o bom preço:

O plano profissional oferece diversos recursos ilimitados por apenas $9 dólares por unidade de scrapy. Podemos dizer que essa “unidade de scrapy” é como se fosse uma instância de uma máquina com 1 GB de memória RAM e capacidade de executar 1 bot por vez. É bem provável que as especificações dessa unidade irão servir para todos os seus propósitos, já que os crawlers geralmente não consomem grandes quantidades de memória e processamento, todavia também é oferecido uma opção de auto-scaling para aumentar os recursos da máquina caso necessário.

Se a intenção for executar múltiplos crawlers em paralelo é preciso comprar mais de uma unidade, todavia como o tempo de execução é ilimitado é possível deixar os crawlers agendados para serem executados consecutivamente sem ter que gastar mais por isso.

Por fim, o Scrapy Cloud possui integração fácil com as demais ferramentas do Hub e alguns outros Addons (complementos), fazendo com que a sua adoção seja ainda mais vantajosa para trabalhar com esse conjunto e deixar os crawlers ainda mais robustos.

Desvantagens

Até o momento, a única desvantagem que encontrei foram relacionados a erros na inicialização de alguns crawlers em específico, onde não consegui entender exatamente o motivo pela falta de um log mais detalhado. A execução do crawler em si possui ótimos logs, mas o erro que me deparei (antes ainda do crawler começar a executar) simplesmente não me deixou pistas.

Além disso, a documentação e a comunidade não parece ser tão vasta, apesar de que realmente em poucas situações você irá precisar de ajuda externa, principalmente se você tiver um conhecimento básico sobre servidores (o que definitivamente não é o meu caso).

Iniciando com o Scrapy Cloud

Para ter certeza se o Scrapy Cloud vai atender suas necessidade ou não, basta testar! O lado bom é que existem uma versão free para isso, sendo necessário apenas criar sua conta no Scrapy Hub aqui: https://app.scrapinghub.com/account/login/.

Após criar sua conta, vamos criar um novo projeto no Scrapy Cloud e nomeá-lo da forma que preferir:

Novo projeto criado na scrapy clound! Basta criar no botão “CREATE PROJECT”

Ao entrar no projeto é possível ver uma seção de “Code & Deploys” na barra lateral, onde podemos conectar ao Github do projeto ou executar os comandos exibidos para fazer deploy do seu crawler.

Passo a passo de comandos da primeira execução

Uma vez que o shub foi instalado e o login realizado com a sua key, basta executar o comando shub deploy seguido do id do seu projeto para subir as alterações para o servidor na nuvem.

Na mesma tela, é possível observar a lista dos deploys que foram realizados e o status desse deploy:

Observe que o deploy aqui foi realizado com sucesso

No primeiro deploy, serão criados alguns arquivos novos no seu projeto, sendo um deles o scrapinghub.yml. Esse arquivo é utilizado para controlar as configurações dos deploys do projeto, como por exemplo, o id do seu Spyder Cloud e também o arquivo de requisitos para executar o projeto.

Ao definir esse arquivo, o servidor irá instalar as dependências automaticamente.

Feito isso, podemos acessar o Dashboard do Scrapy Cloud, onde é possível verificar os processos (jobs) em etapas, como se fosse uma pipeline:

Acompanhamos o processo de execução do crawler aqui

Container Group: Aqui podemos ver o status da nossa “unidade de scrapy”, ou seja, é possível verificar quantas unidades estão paradas, executando crawlers em outros projetos ou executando um crawler no projeto atual, conforme falamos anteriormente, quanto mais unidades, mais crawlers simultâneos será possível executar.

Next Jobs: São os crawlers que estão aguardando a disponibilidade da unidade de scrapy para serem executados.

Running Jobs: São os crawlers que estão sendo executados. Aqui também é possível acompanhar os logs gerados, as requisições e até os dados que estão sendo capturados.

Completed Jobs: São os crawlers que já executaram.

Para executar seu crawler e ver todas essas etapas, basta clicar em “RUN” na parte superior direita e escolher o crawler que você deseja rodar.

Pronto!! Seu web crawler já está hospedado e pode ser executado a qualquer momento de forma fácil, basta aproveitar a plataforma e adequar para atender melhor as suas necessidades.

Conclusão

Para quem não possui um conhecimento aprofundado de outros servidores como a AWS ou a Google Cloud ou pretende usar outras ferramentas integradas para deixar os bots mais robustos a opção do Scrapy Cloud é sem dúvida muito boa e por um preço acessível.

--

--

Alvaro Leandro Cavalcante Carneiro
Data Hackers

MSc. Computer Science | Data Engineer. I write about artificial intelligence, deep learning and programming.