-
-
Notifications
You must be signed in to change notification settings - Fork 410
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Completar revisões para spiders feitos com scripts automatizados #1284
Comments
Fiz esse script que me ajudou a validar os spiders do Maranhão. Acho que pode ajudar mais alguém, e talvez possamos melhorar isso pra incluir numa documentação ou dentro do próprio projeto. #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import subprocess
from sys import argv
from datetime import date, timedelta
from pathlib import Path
if len(argv) <= 1:
print('Você precisa fornecer um spider como argumento!')
exit(127)
TODAY = date.today()
YESTERDAY = date.today() - timedelta(1)
MONTH_START = date.today() - timedelta(30)
DATE_FORMAT = '%Y-%m-%d'
SPIDERS = argv[1:]
def scrape(spider: str, output_file_name: str, params: list[str]):
log_file = f'{spider}_{output_file_name}.log'
csv_file = f'{spider}_{output_file_name}.csv'
command = ['scrapy', 'crawl', spider]
command.extend(params)
command.extend(['-s', 'LOG_FILE=' + log_file, '-o', csv_file])
subprocess.run(command)
if 'log_count/ERROR' in Path(log_file).read_text():
print(f'Erro encontrado no arquivo {log_file}!')
for spider in SPIDERS:
scrape(
spider=spider,
output_file_name='yesterday',
params=[
'-a',
'start_date=' + YESTERDAY.strftime(DATE_FORMAT)
]
)
scrape(
spider=spider,
output_file_name='interval',
params=[
'-a',
'start_date=' + MONTH_START.strftime(DATE_FORMAT),
'-a',
'end_date=' + TODAY.strftime(DATE_FORMAT),
]
)
scrape(
spider=spider,
output_file_name='complete',
params=[]
) Pra rodar, é só passar o nome dos spiders como parâmetros. python tests/spiders.py ma_matoes_do_norte ma_paco_do_lumiar ma_pedreiras ma_pindare_mirim ma_santa_luzia_do_parua ma_trizidela_do_vale ma_vargem_grande ma_vila_nova_dos_martirios Caso haja algum erro na coleta, ele mostra no console.
|
@jjpaulo2, que tal abrirmos uma issue para conversar sobre isso? Poderia mesmo ter um recurso desses no repositório. E, no espaço da issue, a gente discutir outras verificações a serem incluídas, pq só buscar por As PRs que comentou que revisaria também estava pensando em usar esse script, ne? Bora dar uma segurada nelas pra gente validar isso primeiro e aí passar a usar com consistência. |
Show! O que eu tô fazendo no momento é usar o script mais pra agilizar o trabalho de rodar os spiders. E depois eu vou passando nos arquivos de saída um a um, procurando problemas. Se a gente incrementar essas validações, talvez nem precisaria mais olhar os arquivos de saída. |
Considerando que avançamos o conhecimento em torno dos padrões de sites que municípios usam:
Passou a ser uma possibilidade fazer scripts que criam os arquivos das spiders,
uf_municipio.py
, a partir dos achados de mapeamento. Foram feitas algumas experimentações com as PRs a seguir usando diferentes padrões. Todas elas precisam de revisão humana do código (visto que todo o fluxo foi automatizado) e execuções de coletas-teste.Esta issue registra esse escopo específico de PRs abertas e também gerencia o progresso dessas tarefas.
Tasks
Contribuições de revisão são bem-vindas! (comentando na PR que pretende revisá-la)
The text was updated successfully, but these errors were encountered: