Open ogecece opened 1 year ago
Pegando esse
[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
Irei atuar durante a hackoberfest 2023
[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 deinputDiario: "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]).
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
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
ja fiz o push pra minha branch
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
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.
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 nolistagem.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