Esse projeto almeja integrar as bases de dados dos seguintes portais de compras públicas, fornecendo uma interface única:
Até o momento, temos funcionando um script que armazena no banco de dados as atualizações diárias do site Comprasnet.
Para executá-lo, execute o seguinte comando dentro da pasta:
scrapy crawl comprasnet
Para executar o script recorrentemente, utilize um agendador de jobs.
A estrutura de diretórios deve soar familiar para alguém que já usou Scrapy:
scrapy.cfg
: Configurações do Scrapy.licitasp/
: Raiz do projeto.api.py
: Fornece uma API JSON, que serveGET /api/acquisitions
.items.py
: Define a classeAcquisition
.pipelines.py
: Persistência dos objetos em MongoDB.settings.py
: Configurações do projeto.spiders/
: Define os crawlers.comprasnet_spider.py
: Crawler do site Comprasnet.comprasnet_spider.py.md
: Documentação extensiva do arquivo anterior em formato literate programming.
A chamada GET /api/acquisitions
retorno um vetor de objetos JSON contendo os seguintes campos de interesse:
date
: Data de abertura da licitação.description:
Descrição resumida do objeto da licitação.link
: URL para página com maiores detalhes sobre a licitação.modality
: Modalidade de licitação (ex: pregão eletrônico, pregão presencial, convite, etc.).organization
: Órgão público licitante.source
: Origem dos dados (no caso, "comprasnet").
O projeto requer Python com os plugins scrapy
, flask
e pymongo
, bem como MongoDB.