Coder Social home page Coder Social logo

cota_parlamentar_scraping's Introduction

Cotas Pralamentares Scraping

Funcionalidades

Código utilizado para:

  • Processar dados relativos à cota para o exercício da atividade parlamentar
  • Extrair dados relativos às notas fiscais relacionadas a cada despesa:
    • Chave das NFs
    • Dados gerais da nota (quando o documento fornecido pelo site da câmara perimitir)
  • Fazer o download das notas fiscais relacionadas a cada despesa, quando necessário
  • Fazer o download de cupons fiscais referênciados nas notas fiscais
  • Extrair dados das notas e cupons baixados
  • Processar dados extraídos, com o objetivo de identificar possíveis irregularidades
  • Gerar relatórios com os dados extraídos

Configurando

O código só foi testado para uso, para rodar em outros sistemas operacionais, serão necessárias adaptações ao código

Configurando arquivo .env

Inicialmente deve-se copiar o arquivo ".env.sample" para ".env"

Nesse arquivo devem ser preenchidas as variáveis de ambiente.

Google Vision API

Para utilizar o recochecimento de texto dos PDFs, deve-se obter uma chave para o Vision Api, do goolge. O serviço é gratuito para até 1000 requisições mensais, acima dessa quantidade há um custo de 1,5 dólares para cada mil requisições. Esse custo pode ser abadito dos 300 dólares de crédito que a Google fornece para o primeiro ano de uitilização dos serviços.

Caso não seja configurada uma chave para o api, as chaves de algumas NFs deverão ser inseridas manualmente.

ANTI-CAPTCHA API

Para utilizar os serviços de resolução de captcha, deverá ser obtida uma chave para o API do site ANTI-CAPTCHA. O uso do serviço fica entre 1 e 2 dólares para cada 1000 captchas resolvidos.

Caso não seja configurada nenhuma chave para a resolução dos captchas, esses deverão ser resolvidos manualmente pelo usuário.

Inicializando container

Na raíz do projeto, deve-se criar o container do banco de dados

docker-compose up --no-start

Após a criação basta inicializá-lo

docker-compose start

Instalando markdown-folder-to-html para conversão de relatórios para HTML

npm install -g markdown-folder-to-html

Inserindo dados das cotas parlamentares (obtidos do site da câmara) no bando de dados

./nfDownloader import-expenses \<ARQUIVO JSON\>

Inserindo dados dos sercretários dos parlamentares no banco de dados

./nfDownloader import-secretaries ./inputs/dbJson/Secretarios.json

Utilização

Fazer donwload de arquivos relativos às despesas dos parlamentares

./nfDownloader donwload-doc-files \<JSON COM IDS DOS DOCUMENTOS\>

O repositório possui um json de exemplo para o download de alguns documentos.

./nfDownloader donwload-doc-files ./inputs/example_docIds.json

Localizar chave das NFs nos documentos baixados, em formato PDF

./nfDownloader find-keys \<JSON COM IDS DOS DOCUMENTOS\>

Pode-se utilizar o json de exemplo:

./nfDownloader find-keys ./inputs/example_pdfDocIds.json

O códgio tenta localizar o texto com a chave no PDF, caso isso não seja possível (porque o PDF é formado por imagens, por exemplo) o PDF será aberto. O usuário deverá, então, tirar um print screen da área em que o texto da chave se encontra, e apertar as teclas CTRL+SHIFT+ALT, para que o programa possa continuar rodando. O código usuará uma API da Google para extrair o texto da imagem e repetirá o processo para as próximas notas fiscais.

Verificação das chaves extraídas dos PDFs

A extração da chave das NFs através de imagens pode conter erros. Para verificar e corrigir esses erros, é possível gerar um arquivo HTML, onde o usuário poderá conferir os dados extraídos. Para facilitar esse processo, o texto da chave fica vermelho quando o número de digitos ou o digito verificar não estiverem corretos. Ao final do processo o usuário pode baixar um arquivo json com os novos dados, para serem atualizados no banco de dados.

./nfDownloader gen-key-html \<JSON COM IDS DOS DOCUMENTOS\>

Pode-se utilizar o json de exemplo:

./nfDownloader gen-key-html ./inputs/example_pdfDocIds.json

Após preencher os campos do HTML, deve-se baixar o arquivo json contendo os dados clicando em "submit", no fim do arquivo. Esse arquivo deverá ser usado como entrada na próxima etapa.

Atualiza chave das notas fiscais no banco de dados, baseado em arquivo json

./nfDownloader process-key-data \<JSON COM IDS DOS DOCUMENTOS\>

Pode-se utilizar o json de exemplo:

./nfDownloader process-key-data ./inputs/example_pdfDocIds_keys.json

Processa documentos, baseado em arquivo json com lista de documentos relacionados

./nfDownloader process-docs \<JSON COM IDS DOS DOCUMENTOS\>

Pode-se utilizar o json de exemplo:

./nfDownloader process-docs ./inputs/example_docIds.json

Deve-se processar os documentos para que a chave das nfs a serem baixadas seja extraída.

Baixa notas fiscais, baseado em arquivo json com lista de chaves

./nfDownloader donwload-nf-list \<JSON COM CHAVE DAS NFs\> -r -p\<Número de navegadores em paralelo\>

A opção "-r" indica que arquivos existentes serão sobrescritos, e a opção "-p 10" indica que serão executadas 10 instâncias em paralelo para baixar os arquivos. Quando não há uma chave para o API do anticaptcha disponível, o usuário poderá resolver os captchas manualmente. Após resolver cada captcha, basta pressionar CTRL+ALT+SHIFT para que o programa continue a rodar. A resolução manual pode ser utilizada com várias instancias em paralelo, as páginas com captchas para resolver serão trazidas para frente, uma por vez.

Baixa notas fiscais, baseado em arquivo json com lista de documentos relacionados

./nfDownloader donwload-doc-list \<JSON COM IDS DOS DOCUMENTOS\>

Pode-se utilizar o json de exemplo:

./nfDownloader donwload-doc-list ./inputs/example_docIds.json -r -p 10

A opção "-r" indica que arquivos existentes serão sobrescritos, e a opção "-p 10" indica que serão executadas 10 instâncias em paralelo para baixar os arquivos.

Processa notas fiscais, baseado em arquivo json com lista de documentos relacionados

./nfDownloader process-nfs \<JSON COM IDS DOS DOCUMENTOS\>

Pode-se utilizar o json de exemplo:

./nfDownloader process-nfs ./inputs/example_docIds.json

Baixa cupons fiscais referenciados em NFs, baseado em arquivo json com lista de documentos relacionados

./nfDownloader donwload-doc-children \<JSON COM IDS DOS DOCUMENTOS\>

Pode-se utilizar o json de exemplo:

./nfDownloader donwload-doc-children ./inputs/example_docIds.json -p 10

Processa cupons fiscais referenciados em NFs, baseado em arquivo json com lista de documentos relacionados

./nfDownloader process-nfs-children \<JSON COM IDS DOS DOCUMENTOS\>

Pode-se utilizar o json de exemplo:

./nfDownloader process-nfs-children ./inputs/example_docIds.json

Gera relatório, baseado em arquivo json com lista de documentos

./nfDownloader generate-report \<JSON COM IDS DOS DOCUMENTOS\>

Pode-se utilizar o json de exemplo:

./nfDownloader generate-report ./inputs/example_docIds.json

cota_parlamentar_scraping's People

Contributors

rodrigoatorres avatar

Stargazers

Leonardo Colman Lopes avatar

Watchers

 avatar

Forkers

riicardofarias

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.