MPMG-DCC-UFMG / C01

Coleta de Dados Públicos
GNU General Public License v3.0
18 stars 9 forks source link

Navegação do coletor exibe resultados diferentes de navegação manual #3528

Open isabel-elise opened 2 years ago

isabel-elise commented 2 years ago

Comportamento Esperado

O coletor deveria, a partir da url base https://e-gov.betha.com.br/transparencia/01037-136/recursos.faces?mun=9EyUVY2tLy7P1ySIH33RunH6xf8sCQOn, acessar o link 'Servidores/empregados ativos', esperar a página carregar por alguns segundos, selecionar o ano de consulta, e, logo em seguida, selecionar o mês.

Comportamento Atual

Após a seleção do ano de consulta, mesmo com a espera de alguns segundos, os screenshots da coleta mostram que o estado da página após a seleção é diferente do estado da página exibido com a repodução das mesmas ações em navegação manual. Essa diferença interfere no passo seguinte de seleção do mês de consulta, fazendo com que a coleta lance um erro indicando que não conseguiu encontrar o Xpath relativo ao seletor.

Passos para reproduzir o erro

  1. Carregar o arquivo de configuração especificado na seção abaixo
  2. Alterar o caminho para salvar arquivos como necessário
  3. Executar a coleta
  4. Comparar os screenshots com o estado das páginas visitadas em navegação manual

Especificações da Coleta

Arquivo de configuração: { "source_name": "[Realiza\u00e7\u00e3o-F01] Coleta de Servidores P\u00fablicos - Servidores Ativos de Cl\u00e1udio", "base_url": "https://e-gov.betha.com.br/transparencia/01037-136/recursos.faces?mun=9EyUVY2tLy7P1ySIH33RunH6xf8sCQOn", "obey_robots": false, "data_path": "home/isabel/claudio/servidores_ativos", "request_type": "GET", "form_request_type": "POST", "antiblock_download_delay": 2, "antiblock_autothrottle_enabled": false, "antiblock_autothrottle_start_delay": 2, "antiblock_autothrottle_max_delay": 10, "antiblock_ip_rotation_enabled": false, "antiblock_ip_rotation_type": "tor", "antiblock_max_reqs_per_ip": 10, "antiblock_max_reuse_rounds": 10, "antiblock_proxy_list": "", "antiblock_user_agent_rotation_enabled": false, "antiblock_reqs_per_user_agent": 100, "antiblock_user_agents_list": "", "antiblock_insert_cookies_enabled": false, "antiblock_cookies_list": "", "captcha": "none", "has_webdriver": false, "webdriver_path": "", "img_xpath": "", "sound_xpath": "", "dynamic_processing": true, "skip_iter_errors": false, "explore_links": false, "link_extractor_max_depth": null, "link_extractor_allow_url": "", "link_extractor_allow_domains": "", "link_extractor_tags": "", "link_extractor_attrs": "", "link_extractor_check_type": false, "link_extractor_process_value": "", "download_files": false, "download_files_allow_url": "", "download_files_allow_extensions": "pdf,txt", "download_files_allow_domains": "", "download_files_tags": "", "download_files_attrs": "", "download_files_process_value": "", "download_files_check_large_content": true, "download_imgs": false, "steps": "{\"step\":\"root\",\"depth\":0,\"children\":[{\"step\":\"espere\",\"depth\":1,\"arguments\":{\"segundos\":\"4\"}},{\"step\":\"screenshot\",\"depth\":1,\"arguments\":{}},{\"step\":\"clique\",\"depth\":1,\"arguments\":{\"elemento\":\"\\\"//a[text()='Servidores/empregados ativos']\\\"\"}},{\"step\":\"espere\",\"depth\":1,\"arguments\":{\"segundos\":\"2\"}},{\"step\":\"screenshot\",\"depth\":1,\"arguments\":{}},{\"step\":\"para_cada\",\"depth\":1,\"iterator\":\"ano\",\"children\":[{\"step\":\"selecione\",\"depth\":2,\"arguments\":{\"xpath\":\"\\\"/html/body/div[1]/div[1]/div/div/div/form/div[1]/div[1]/span/div/span/div[1]/div[1]/label/span/select\\\"\",\"opcao\":\"ano\"}},{\"step\":\"espere\",\"depth\":2,\"arguments\":{\"segundos\":\"4\"}},{\"step\":\"screenshot\",\"depth\":2,\"arguments\":{}},{\"step\":\"para_cada\",\"depth\":2,\"iterator\":\"mes\",\"children\":[{\"step\":\"selecione\",\"depth\":3,\"arguments\":{\"xpath\":\"\\\"/html/body/div[1]/div[1]/div/div/div/form/div[1]/div[1]/span/div/span/div[1]/div[2]/label/span/select\\\"\",\"opcao\":\"mes\"}},{\"step\":\"espere\",\"depth\":3,\"arguments\":{\"segundos\":\"4\"}},{\"step\":\"screenshot\",\"depth\":3,\"arguments\":{}},{\"step\":\"clique\",\"depth\":3,\"arguments\":{\"elemento\":\"\\\"//input[@id='mainForm:consultar']\\\"\"}},{\"step\":\"espere\",\"depth\":3,\"arguments\":{\"segundos\":\"6\"}},{\"step\":\"clique\",\"depth\":3,\"arguments\":{\"elemento\":\"\\\"//input[@id='btExpandirTodos']\\\"\"}},{\"step\":\"espere\",\"depth\":3,\"arguments\":{\"segundos\":\"2\"}},{\"step\":\"screenshot\",\"depth\":3,\"arguments\":{}},{\"step\":\"salva_pagina\",\"depth\":3,\"arguments\":{}},{\"step\":\"clique\",\"depth\":3,\"arguments\":{\"elemento\":\"\\\"//input[@id='mainForm:novaConsulta']\\\"\"}},{\"step\":\"espere\",\"depth\":3,\"arguments\":{\"segundos\":\"2\"}}],\"iterable\":{\"call\":{\"step\":\"opcoes\",\"arguments\":{\"xpath\":\"\\\"/html/body/div[1]/div[1]/div/div/div/form/div[1]/div[1]/span/div/span/div[1]/div[2]/label/span/select\\\"\"}}}}],\"iterable\":{\"call\":{\"step\":\"objeto\",\"arguments\":{\"objeto\":\"[str(i) for i in range(2016,2023)]\"}}}}]}", "encoding_detection_method": 1, "expected_runtime_category": "fast", "templated_url_parameter_handlers": [], "static_form_parameter_handlers": [], "templated_url_response_handlers": [], "static_form_response_handlers": [], "crawler_id": 305, "instance_id": "165356473705469" }

Screenshots

Estado da página em navegação manual após a seleção do ano de consulta: image

Estado mostrado por meio de screenshot da coleta: image

louisaturn commented 2 years ago

Olá! tudo bem? Quando vi essa issue, lembrei muito da #806, cuja solução se baseia em usar um navegador diferente (por questões de user-agent, no caso). Novamente, aproveitei o Cross-Browser do Playwright para executar um script de screenshot usando navegador Firefox.

Abaixo, o resultado:

pgclaudio2016

Dessa forma, acredito que essa issue possa ser resolvida ao implementarmos a feature de escolha de navegadores, como proposto em https://github.com/MPMG-DCC-UFMG/C01/issues/3055. Com a entrada do novo processamento dinâmico, o desenvolvimento dessa configuração será possível, e, esperançosamente, resolverá o problema. Portanto, estou fechando essa issue e aumentando a prioridade da implementação dessa feature.