-
-
Notifications
You must be signed in to change notification settings - Fork 415
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
Add Vitória-ES spider #748
Conversation
66ff3fe
to
fd08532
Compare
dbe9f8b
to
f18af11
Compare
f8d243c
to
ffca201
Compare
…de data ao carregar informações no cookiejar
Finalmente vindo nessa PR! 😅 Dessa vez, optei por revisar e ir commitando, permitindo que a navegação pelos commits deixe visual o progresso da revisão. Deixo comentários para os commits mais importantes em seguida, mas, no geral, a lógica estava funcionado perfeitamente (💖💖), só a coleta dos metadados que tive que atualizar os seletores (em Confirmando que estava funcional, passei a olhar para melhorias / refatorar o código. Os comentários são todos nessa linha. e424be9: remove init() - não faz parte do padrão do projeto usar o 707707e & a14da77: muda passagem de valores entre métodos e a forma de percorrer datas - aqui tem dois aspectos:
Originaldef initial_parse(self, response):
# ...
yield FormRequest.from_response(
# ...
cb_kwargs={"year": year}, # passa year como parametro
# ...
meta={"cookiejar": f"{self.name}_{year}_12"}, # adiciona year na cookiejar
)
def parse_year(self, response, year): # espera receber year de argumento Revisadodef make_year_request(self, response): # método renomeado para ser mais intuitivo com o papel dele
# ...
yield FormRequest.from_response(
# ...
# não recorre à cb_kwargs
meta={"cookiejar": (yearly_date.year)}, # cookie modificado para ser só o numero, sem string
)
def make_month_request(self, response): # não precisa de year
year = response.meta.get("cookiejar") # acessa year por meio do cookiejar
Porém, é mais prático gerar todos os pares (mes, ano) que o raspador quer coletar logo no início e aproveitar a lógica de cookiejar já implementada para ir propagando os valores para os métodos. Aí não precisa repetir verificações depois disso pois o intervalo de interesse foi forçado logo no começo.
ed14bd6 & 034395a : coleta campos do formulário - antes estava coletando o nome dos campos do formdata dinamicamente. Tem a riqueza disso ser robusto, talvez evitando o raspador de quebrar caso o site for atualizado. Inicialmente, criei o método e75155f - aqui retirei o |
es_vitoria_ultima.log | es_vitoria_ultima.csv Sem custom_settings = {"RETRY_HTTP_CODES": [500, 502, 503, 504, 522, 524, 408, 429, 406]} |
Obrigada pela PR @ayharano e, como sempre, pela paciência 🙇🏼♀️ |
AO ABRIR um Pull Request de um novo raspador (spider), marque com um
X
cada um dos items do checklistabaixo. NÃO ABRA um novo Pull Request antes de completar todos os items abaixo.
Checklist - Novo spider
start_date
eend_date
definidos) ao menos uma vez e os dados retornados estavam corretos.log/ERROR
igual a zero).start_date
no seu spider com a data do Diário Oficial mais antigo disponível na página da cidade.Descrição
Adiciona spider para Vitória, ES