Crawler e Seus Desafios
Meu desafio de crawler para uma vaga
Participei de um processo seletivo e levei 2 dias para desenvolver uma API.
Nunca tinha desenvolvido um web crawler, apenas web scraping. Por mais que sejam parecidos, não são iguais.
Antes de começar a desenvolver, fiz uma entrevista. Ele me passou os detalhes do que esperava que eu desenvolvesse e que o crawler não podia usar o navegador devido à questão de desempenho. Então, fui desenvolver.
Depois de algumas horas, finalizei e enviei o link do projeto, que foi repassado para um desenvolvedor. Porém, não era exatamente o que eles esperavam, embora fosse o que o entrevistador havia solicitado. O desenvolvedor me disse que não era para usar navegador, mesmo eu tendo feito sem, utilizando apenas Axios e Cheerio.
Fiquei um pouco perdido, pois nunca tinha utilizado Cheerio antes, então fiquei na duvida se eu tinha pesquisado corretamente antes de começar (Eu tinha pesquisado bastante, o que me levou a escolher essa abordagem nesse processo)
Com esse problema, o entrevistador criou um grupo comigo, o desenvolvedor e outras pessoas que também tiveram a mesma dúvida, pois os detalhes não foram passados corretamente. Nessa confusão, percebi que houve um equívoco ao afirmarem que eu estava utilizando um navegador.
Mesmo começando com essa bagunça, aprendi bastante nesse processo. Percebi que ser um desenvolvedor vai além de simplesmente saber usar uma ferramenta; trata-se de encontrar as melhores soluções e resolver os desafios que surgem.
E depois com novas tarefas o que mais me desafiou nesse projeto foi implementar a paginação de uma parte do site. Era um tipo de paginação que eu nunca tinha visto antes. Ao analisar como funcionava, tentei fazer uma engenharia reversa, mas não tive sucesso. Por exemplo, abri o DevTools do navegador para entender o processo. Notei que, ao solicitar a próxima página, o site enviava uma requisição para o backend com um payload url encoded e retornava um XML que inicialmente não fazia sentido para mim, pois não encontrei os dados das páginas nele. No entanto, os dados da página eram corretamente renderizados na interface. Decidi então focar nas outras partes do projeto e deixei essa paginação de lado, perdendo metade do tempo de desenvolvimento da API tentando resolver esse problema.
Vou deixar o link da API caso queiram dar uma olhada, melhorar ou até mesmo resolver esse desafio. Mesmo não sendo aprovado, vou continuar tentando entender e resolver esse problema!