Skip to content

riquellopes/desafio-captura

Repository files navigation

Build Status

Desafio Captura

Resolvi batizar a aplicação com o nome Monk, uma referências ao seriado. Para construir essa aplicação eu utilizei python3.5+tornado+redis+lxml. Para orquestrar todos esses serviços eu utilizei Docker e Docker Compose. Estando com tudo configurado corretamente, basta executar o comando abaixo.

Respostas:

  • O monk já foi modelado pesando nesse cenário. Ele precisa de apenas alguns refactores na feature que grava o csv. E quando o worker for executado, refatorar para ele abrir processos diferentes para cada handler. E depois analisar a quantidade de workers a mais eu preciso rodando, para aumentar a velocidade do scraping.
  • Eu usaria o phantomjs.
  • Eu usaria um proxy para maquiar a origem da requisição.
  • O scraping é um solução paleativa, para o cliente/site que não possui um xml/api/soap que possa ser consultado, para não concorrer com os acessos do site. Eu diminuiria a quantidade de acessos diários e negociaria com cliente para que ele disponibilize esse conteúdo em um xml talvez.

Documentação

Criar ambiente.

    $ docker-compose up

    # No MacOsx a primeira vez
    $ docker-machine start
    $ docker-machine env
    $ eval $(docker-machine env)

    $ docke-compose up or docke-compose stop

Variavéis de ambiente.

    MONK_REDIS_HOST=monk-redis
    MONK_REDIS_PORT=6379
    MONK_REDIS_DB=0

Processar tarefas.

  $ make container-task

Ao fim do processo o worker irá gerar um arquivo com o nome do handler na raiz. epocacosmeticoshandler.csv

Executar testes.

   $ make container-test

Limpar redis

   $ make clean-redis

Criar setup fora do container e executar tarefas.

    $ make venv
    $ source venv/bin/activate
    $ make setup-local

    $ make test # Para executar os testes da aplicação
    $ make test-cov # Para ver a cobetura de testes.
    $ make task # Para enfileirar todas as tarefas.

    $ ./worker.py # Para processar todas tarefas enfileiradas.

Referências proxy:

- http://proxymesh.com
- http://www.ninjasproxy.com
- https://www.hidemyass.com
- https://www.proxyrain.com/pricing
- https://scrapinghub.com

About

Capturar informações

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages