okfn-brasil / querido-diario

📰 Diários oficiais brasileiros acessíveis a todos | 📰 Brazilian government gazettes, accessible to everyone.
https://queridodiario.ok.org.br/
MIT License
1.07k stars 391 forks source link

Timon-MA #869

Open ogecece opened 1 year ago

ogecece commented 1 year ago

URL da forma de consulta

https://timon.ma.gov.br/semgov/diario/listagem.php?pagina=0

Período de publicação

20/03/2013 - atualmente

Formato da publicação

Os diários oficiais são publicados em PDF (texto)

Conteúdo da publicação

Diário único: documento publicado é uma edição completa do diário oficial

Algumas datas contém edições suplementares.

Detalhes do site de publicação

Site funciona como uma paginação simples (até um pouco demais pois é possível ver todas as páginas disponíveis).

Fazendo requisição GET para https://timon.ma.gov.br/semgov/diario/pesquisaP.php?editData_inicio=20/03/2013&editData_fim=12/06/2023&inputDiario=&pagina=1 (modificando as datas) é possível filtrar por data e o resultado é a mesma lista paginada que temos no listagem.php.

Observações

Talvez o link do arquivo baixado seja gerado dinamicamente e não fique disponível depois: teste

Não existe uma issue aberta para esse município

peddrogomes commented 1 year ago

Pegando esse

Winzen commented 1 year ago

[Dicas para quem futuramente possa assumir]

Os diários agora estão localizados em https://timon.ma.gov.br/diario/

Verificando o novo site vi que se você mandar um POST para https://timon.ma.gov.br/diario/pesquisa_numerodiario.php com o parâmetro de inputDiario: "1" você consegue uma pagina com a lista de todos os diários disponíveis.

Acredito que isso possa facilitar adaptação do código ao novo site

engFelipeMonteiro commented 11 months ago

Irei atuar durante a hackoberfest 2023

engFelipeMonteiro commented 11 months ago

[Dicas para quem futuramente possa assumir]

Os diários agora estão localizados em https://timon.ma.gov.br/diario/

Verificando o novo site vi que se você mandar um POST para https://timon.ma.gov.br/diario/pesquisa_numerodiario.php com o parâmetro de inputDiario: "1" você consegue uma pagina com a lista de todos os diários disponíveis.

Acredito que isso possa facilitar adaptação do código ao novo site

Náo consegui replicar o 'inputDiario=1',

verificado que o novo site possui 3 modos de pesquisa, por data, por palavra e por numero do diario.

Por data (todos)


curl 'https://timon.ma.gov.br/diario/pesquisa.php' \
   -H 'content-type: application/x-www-form-urlencoded' \
 --data-raw 'TipoDiario_datas=Todos&editData_inicio=01%2F01%2F2000&editData_fim=31%2F12%2F2023' \
  --compressed

Por data executivo?

curl 'https://timon.ma.gov.br/diario/pesquisa.php' \
  -H 'content-type: application/x-www-form-urlencoded' \
      --data-raw 'TipoDiario_datas=Executivo&editData_inicio=01%2F01%2F2000&editData_fim=31%2F12%2F2023' \
  --compressed

Por data Legislativo:

url 'https://timon.ma.gov.br/diario/pesquisa.php' \
 -H 'content-type: application/x-www-form-urlencoded' \
 --data-raw 'TipoDiario_datas=Legislativo&editData_inicio=01%2F01%2F2000&editData_fim=31%2F12%2F2023' \
  --compressed

Pro palavra:

curl 'https://timon.ma.gov.br/diario/pesquisa_palavra.php' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-raw 'TipoDiario_palavra=Todos&inputPalavra=' \
  --compressed

Por diario:

curl 'https://timon.ma.gov.br/diario/pesquisa_numerodiario.php' \
  -H 'content-type: application/x-www-form-urlencoded' \
  --data-raw 'TipoDiario_numero=Todos&inputDiario=10' \
  --compressed

A requisição post retorna a pagina html com os links dos documentos em (/html/body/div/header/div[2]/header/div/div[1]/header/div[2]/div/div/table/tbody/tr[1]/td[6]/a[1]).

engFelipeMonteiro commented 11 months ago

Os diarios estão sendo mostrados de forma continua desde 20/03/2013(start date). Porém ha alguns(4) anteriores a isso, de forma esparsa

engFelipeMonteiro commented 11 months ago

finalizado de desenvolver o crawler e após executar ele inteiro parece que trouxe todos os pdfs, realizei algumas verificações

segue o fim do log de execução, parece que deu 1 erro:

2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] ------------------------------ MONITORS ------------------------------
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] Comparison Between Executions/Days without gazettes... OK
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] Requests/Items Ratio/Ratio of requests over items scraped count... OK
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] Error Count Monitor/test_stat_monitor... SKIPPED (Unable to find 'log_count/ERROR' in job stats.)
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] Finish Reason Monitor/Should have the expected finished reason(s)... OK
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] Item Validation Monitor/test_stat_monitor... FAIL
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] ----------------------------------------------------------------------
2023-10-17 23:24:15 [ma_timon] ERROR: [Spidermon] 
======================================================================
FAIL: Item Validation Monitor/test_stat_monitor
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/felipemonteirojacome/workspace/querido-diario/venv/lib/python3.9/site-packages/spidermon/contrib/scrapy/monitors.py", line 144, in test_stat_monitor
    assertion_method(
AssertionError: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0'. Current value: '1'

2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] 5 monitors in 0.011s
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] FAILED (failures=1, skipped=1)
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] -------------------------- FINISHED ACTIONS --------------------------
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] ----------------------------------------------------------------------
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] 0 actions in 0.000s
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] OK
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] --------------------------- PASSED ACTIONS ---------------------------
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] ----------------------------------------------------------------------
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] 0 actions in 0.000s
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] OK
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] --------------------------- FAILED ACTIONS ---------------------------
2023-10-17 23:24:15 [spidermon.contrib.actions.discord] INFO: *ma_timon* finished
- Finish time: *2023-10-18 02:24:15.629638*
- Gazettes scraped: *3186*
- 🔥 1 failures 🔥
===== FAILURES =====
Item Validation Monitor/test_stat_monitor: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0'. Current value: '1'
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] CustomSendDiscordMessage... OK
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] ----------------------------------------------------------------------
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] 1 action in 0.000s
2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] OK
2023-10-17 23:24:15 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 1184834,
 'downloader/request_count': 3153,
 'downloader/request_method_count/GET': 3152,
 'downloader/request_method_count/POST': 1,
 'downloader/response_bytes': 3646730267,
 'downloader/response_count': 3153,
 'downloader/response_status_count/200': 3152,
 'downloader/response_status_count/404': 1,
 'elapsed_time_seconds': 2212.466172,
 'file_count': 3186,
 'file_status_count/downloaded': 3151,
 'file_status_count/uptodate': 35,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2023, 10, 18, 2, 24, 15, 629638),
 'httpcompression/response_bytes': 4870196,
 'httpcompression/response_count': 2,
 'item_dropped_count': 1,
 'item_dropped_reasons_count/DropItem': 1,
 'item_scraped_count': 3186,
 'log_count/DEBUG': 9526,
 'log_count/ERROR': 1,
 'log_count/INFO': 71,
 'log_count/WARNING': 10,
 'memusage/max': 210485248,
 'memusage/startup': 99958784,
 'response_received_count': 3153,
 'scheduler/dequeued': 1,
 'scheduler/dequeued/memory': 1,
 'scheduler/enqueued': 1,
 'scheduler/enqueued/memory': 1,
 'spidermon/validation/fields': 25496,
 'spidermon/validation/fields/errors': 1,
 'spidermon/validation/fields/errors/field_too_short': 1,
 'spidermon/validation/fields/errors/field_too_short/files': 1,
 'spidermon/validation/items': 3187,
 'spidermon/validation/items/dropped': 1,
 'spidermon/validation/items/errors': 1,
 'spidermon/validation/validators': 1,
 'spidermon/validation/validators/item/jsonschema': True,
 'start_time': datetime.datetime(2023, 10, 18, 1, 47, 23, 163466)}
2023-10-17 23:24:15 [scrapy.core.engine] INFO: Spider closed (finished)

pendente realizar testes com start_date e end_date

scrapy crawl  -a start_date=
scrapy crawl  -a end_date=

possivelmente rodar com o log:

scrapy crawl  -s LOG_FILE=log_.txt

engFelipeMonteiro commented 11 months ago

ja fiz o push pra minha branch

engFelipeMonteiro commented 10 months ago

Identificado que o arquivo referente ao arquivo do dia 12/05/2021 não foi encontrado, edição suplementar. Reportado na pagina sobre o problema

talesmota commented 4 months ago

finalizado de desenvolver o crawler e após executar ele inteiro parece que trouxe todos os pdfs, realizei algumas verificações

segue o fim do log de execução, parece que deu 1 erro:

Traceback (most recent call last): File "/Users/felipemonteirojacome/workspace/querido-diario/venv/lib/python3.9/site-packages/spidermon/contrib/scrapy/monitors.py", line 144, in test_stat_monitor assertion_method( AssertionError: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0'. Current value: '1'

2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] 5 monitors in 0.011s 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] FAILED (failures=1, skipped=1) 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] -------------------------- FINISHED ACTIONS -------------------------- 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] ---------------------------------------------------------------------- 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] 0 actions in 0.000s 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] OK 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] --------------------------- PASSED ACTIONS --------------------------- 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] ---------------------------------------------------------------------- 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] 0 actions in 0.000s 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] OK 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] --------------------------- FAILED ACTIONS --------------------------- 2023-10-17 23:24:15 [spidermon.contrib.actions.discord] INFO: ma_timon finished

  • Finish time: 2023-10-18 02:24:15.629638
  • Gazettes scraped: 3186
  • 🔥 1 failures 🔥 ===== FAILURES ===== Item Validation Monitor/test_stat_monitor: Expecting 'spidermon/validation/fields/errors' to be '<=' to '0'. Current value: '1' 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] CustomSendDiscordMessage... OK 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] ---------------------------------------------------------------------- 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] 1 action in 0.000s 2023-10-17 23:24:15 [ma_timon] INFO: [Spidermon] OK

pendente realizar testes com start_date e end_date

scrapy crawl -a start_date= scrapy crawl -a end_date= possivelmente rodar com o log:

scrapy crawl -s LOGFILE=log.txt

Oi @engFelipeMonteiro, conseguiu identificar a razão desse erro? Está acontecendo comigo também.

Abraços.