|
| 1 | +## Web Scraping no Diário Oficial da União (Plataforma Imprensa Nacional com dados públicos do governo) e REST API para expor a coleta desses dados. |
1 | 2 |
|
| 3 | +### URL dos Não Detalhados: [https://www.in.gov.br/leiturajornal](https://www.in.gov.br/leiturajornal) |
| 4 | +### URL dos Detalhados: [https://www.in.gov.br/en/web/dou/-/ + `urlTitle`](https://www.in.gov.br/en/web/dou/-/) |
| 5 | + |
| 6 | +## Get Started |
| 7 | + |
| 8 | +1. Instale o Docker: |
| 9 | + |
| 10 | +```bash |
| 11 | +$ apt install docker |
| 12 | +$ apt install docker-compose |
| 13 | +``` |
| 14 | + |
| 15 | +2. Clone o repositório: |
| 16 | + |
| 17 | +```bash |
| 18 | +$ git clone https://github.com/WelBert-dev/web_scraping_and_restAPI_crud_Poder360.git |
| 19 | +$ cd ./web_scraping_and_restAPI_crud_Poder360 |
| 20 | +``` |
| 21 | + |
| 22 | +3. Execute a aplicação: |
| 23 | + |
| 24 | +```bash |
| 25 | +$ docker-compose up --build |
| 26 | +``` |
| 27 | + |
| 28 | +## Atualizações na Estrutura do Docker ou Erros de Montagem |
| 29 | + |
| 30 | +Em caso de alterações na implementação que não refletem no Docker ou erros na montagem das camadas, execute os seguintes comandos para limpar o cache do Docker: |
| 31 | + |
| 32 | +```bash |
| 33 | +$ sudo rm -r ./data/ |
| 34 | +$ docker stop $(sudo docker ps -a -q) ; sudo docker system prune -f ; sudo docker rm -vf $(sudo docker ps -aq) ; sudo docker rmi -f $(sudo docker images -aq) |
| 35 | +``` |
| 36 | + |
| 37 | +**Nota:** Este processo apagará todas as imagens Docker do sistema. |
| 38 | + |
| 39 | + |
| 40 | +## Endpoints da API: |
| 41 | + |
| 42 | +**Nota:** Sempre utilize `&saveInDBFlag=True`, pois esses enpoints são mais performáticos. Isso ocorre pois após finalizar a raspagem o cliente é redirecionado para o endpoint que faz a consulta para o banco de dados e retorna o json com paginação, desta forma não sobrecarrega a renderização do DOM (se estiver consumindo a API pelo browser). |
| 43 | + |
| 44 | +### Jornais Não Detalhados: |
| 45 | + |
| 46 | +- Todas seções DO1, DO2 e DO3 do dia atual: |
| 47 | + ```bash |
| 48 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?saveInDBFlag=True |
| 49 | + ``` |
| 50 | + |
| 51 | +- Por seção mencionada, do dia atual: |
| 52 | + ```bash |
| 53 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?secao=do1&saveInDBFlag=True |
| 54 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?secao=do2&saveInDBFlag=True |
| 55 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?secao=do3&saveInDBFlag=True |
| 56 | + ``` |
| 57 | + |
| 58 | +- Todas seções DO1, DO2 e DO3, da data mencionada: |
| 59 | + ```bash |
| 60 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?data=12-01-2024&saveInDBFlag=True |
| 61 | + ``` |
| 62 | + |
| 63 | +- Por data e seção mencionados: |
| 64 | + ```bash |
| 65 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?secao=do1&data=12-01-2024&saveInDBFlag=True |
| 66 | + ``` |
| 67 | + |
| 68 | +- Requisição para o banco dos registros não detalhados: |
| 69 | + ```bash |
| 70 | + http://127.0.0.1:8000/db_dou_api/journaljsonarrayofdouviewset/ |
| 71 | + ``` |
| 72 | + |
| 73 | +### Jornais Detalhados: |
| 74 | + |
| 75 | +**Nota:** Obs: Mesmo aplicando lógicas de retentaivas quando falha a requisição no servidor do gov, as vezes menos de 10 elementos vem com valores nullos, mas basta fazer a mesma requisição novamente que preenche + elementos, fique tranquilo pois o sistema não insere duplicatas ou valores NULL!! Vou implementar uma lógica de retentativa mais robusta. Mas já esta usável rsrs.. ;D |
| 76 | + |
| 77 | +**Nota:** Isso ocorre por servidores desativados, timeout, ou falhas no bypass do cloudflare (por conta da camada async adicionada no cfscrape que não é async), implementar lógica de retentativa sem condições de break pode cair em looping eterno. |
| 78 | + |
| 79 | +- Todas seções DO1, DO2 e DO3 do dia atual: |
| 80 | + ```bash |
| 81 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?detailDOUJournalFlag=True&saveInDBFlag=True |
| 82 | + ``` |
| 83 | + |
| 84 | +- Por seção mencionada, do dia atual: |
| 85 | + ```bash |
| 86 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?secao=do1&detailDOUJournalFlag=True&saveInDBFlag=True |
| 87 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?secao=do2&detailDOUJournalFlag=True&saveInDBFlag=True |
| 88 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?secao=do3&detailDOUJournalFlag=True&saveInDBFlag=True |
| 89 | + ``` |
| 90 | + |
| 91 | +- Todas seções DO1, DO2 e DO3, da data mencionada: |
| 92 | + ```bash |
| 93 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?data=12-01-2024&detailDOUJournalFlag=True&saveInDBFlag=true |
| 94 | + ``` |
| 95 | + |
| 96 | +- Por data e seção mencionados: |
| 97 | + ```bash |
| 98 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?secao=do1&data=12-01-2024&detailDOUJournalFlag=True&saveInDBFlag=True |
| 99 | + ``` |
| 100 | + |
| 101 | +- Requisição para o banco dos registros detalhados: |
| 102 | + ```bash |
| 103 | + http://127.0.0.1:8000/db_dou_api/detailsinglejournalofdouviewset/ |
| 104 | + ``` |
| 105 | +``` |
| 106 | +
|
| 107 | +### Detalhes de cada registro (jornal) consulta INDIVIDUAL: |
| 108 | +
|
| 109 | +- Detalhando um único registro (jornal) com o field URL TITLE: |
| 110 | +
|
| 111 | + ```bash |
| 112 | + GET http://127.0.0.1:8000/trigger_web_scraping_dou_api/?detailSingleDOUJournalWithUrlTitleField=acordao-cofen-n-103-de-27-de-setembro-de-2022-459835961 |
| 113 | + ``` |
| 114 | + |
| 115 | +### **Nota:** Para mais detalhes de implementação, técnicas, bibliotecas e tecnologias, todo o passo a passo do desenvolvimento foi documentado em: [passo_a_passo_de_desenvolvimento.txt](https://github.com/WelBert-dev/web_scraping_and_restAPI_crud_Poder360/blob/main/passo_a_passo_de_desenvolvimento.txt) |
0 commit comments