DadosAbertosDeFeira / maria-quiteria

Backend para coleta e disponibilização dos dados 📜
https://mq.dadosabertosdefeira.com.br/painel
MIT License
166 stars 69 forks source link

Adicionar número de itens extraídos em uma coleta #176

Closed anapaulagomes closed 3 years ago

anapaulagomes commented 4 years ago

Atualmente utilizamos o spidermon para verificar o formato dos dados coletados e se houve algum erro. Esse relatório, apesar de informar corretamente a respeito da execução e do erro, traz poucos detalhes.

spidermon-telegram

Devemos adicionar no relatório de execução quantos itens foram coletados em cada spider. Dessa forma saberemos quando um spider é executado com sucesso e tem algum tempo sem coletar nenhum item, por exemplo.

Um exemplo disso pode ser encontrado no Querido Diário.

Urahara commented 4 years ago

Bastaria importar e adicionar o ItemCountMonitor no monitors.py? https://github.com/DadosAbertosDeFeira/maria-quiteria/blob/eb5eb5ec67c90123e93946934fa68d15cd62a414/scraper/monitors.py#L4-L11

anapaulagomes commented 4 years ago

Pelo o que entendi, esse monitor serve pra verificar o número mínimo de itens para coleta. Com o ItemCountMonitor temos que especificar o SPIDERMON_MIN_ITEMS (https://spidermon.readthedocs.io/en/latest/monitors.html#spidermon.contrib.scrapy.monitors.ItemCountMonitor). Para esse projeto não faz sentido porque nem sempre temos itens coletados todos os dias. Por exemplo: a Câmara tem sessões 3 vezes por semana. Então não teremos uma ata por dia. O mesmo para licitações, diários oficiais etc.

Acredito que aqui temos que pegar o número de itens coletados nas STATS do Scrapy e adicionar no relatório do Spidermon para o Telegram.

Urahara commented 4 years ago

Entendi! Daria pra criar um extensão e pegar o item_scraped_count e depois jogar pro spidermon.

Urahara commented 4 years ago

@anapaulagomes É possível pegar a mensagem que vai ser enviado pro Telegram sem precisar configurar um bot?

anapaulagomes commented 4 years ago

É sim, @Urahara. Você precisa configurar a variável de ambiente SPIDERMON_TELEGRAM_FAKE=True (se não me engano é padrão no .env.example). Ao executar um spider ou o comando python manage.py crawl a mensagem do Telegram será postada no terminal.

telegram-spidermon

A mensagem do Telegram é essa embaixo de FINISHED ACTIONS.

Urahara commented 4 years ago

tks! vou dar uma olhada.

anapaulagomes commented 4 years ago

Oi, @Urahara! Você está trabalhando nessa issue?