• Nenhum resultado encontrado

5.3.1 Sites estáticos

A raspagem de dados em sites estáticos é realizada através da biblioteca Beautiful Soup (BEAUTIFULSOAP4, 2020).

Tal classe se limita a apenas um grupo de sites, onde não há modificação do conteúdo exibido. Sendo assim, toda a informação contida no site consta puramente dentro do esqueleto HTML da página. Isso oferece uma enorme vantagem a esse tipo de raspagem, pois a única necessidade neste caso é a análise das informações contidas e filtragem das mesmas, obtendo um ganho muito grande no tempo de processamento e retorno dos dados para o usuário.

5.3.2 Sites dinâmicos

Diferente do tipo de raspagem anterior, neste caso, os dados não estão necessari-amente contidos na página inicialmente. Tais dados para serem carregados no HTML, necessitam que scripts JavaScript sejam executados antes de serem mostrados em tela.

Para este caso, se faz necessário uma ferramenta externa para que haja a compilação desses scripts. Tal ferramenta, nesse caso, é um navegador, rodando em modo Headless,

ou seja, sem a presença de uma interface gráfica. Para o presente projeto, foi escolhido o navegador Mozilla Firefox para integrar a aplicação, devido a seu desempenho e também por se tratar de um software open source.

Na classe que desempenha esta função, há métodos embutidos no código, utilizando a biblioteca Selenium, que fazem a chamada do navegador Mozilla, e passam para o mesmo os parâmetros de navegação, assim como é feito na classe de raspagem de sites estáticos:

A URL do site onde se deseja coletar a informação, a localização do dado e a expressão regular para limpeza do dado. Porém, além destas, é necessário passar um parâmetro adicional, nomeado “SleepTime”, melhor explicado a seguir.

Ao se utilizar de um navegador para que sejam compilados os scripts contidos na página, é necessário levar em conta o tempo em que o mesmo fará tal trabalho, ao contrário disso, os dados devolvidos estarão incompletos, uma vez que o navegador não teve tempo suficiente de realizar a compilação. Esse tempo de espera varia em relação a diferentes fatores, entre os principais está a velocidade da conexão com a internet do servidor onde a aplicação está hospedada, e também os recursos de hardware que o servidor possui.

Por conta disso se fez necessário criar o parâmetro “SleepTime”, que garante esse tempo mínimo para que os scripts sejam compilados no navegador e possam ser retornados de maneira correta. Este parâmetro é opcional, e caso não seja passado, seu valor padrão é de 1 segundo.

Por fim, é importante ressaltar que este método de coleta, apesar de ser funcional em praticamente todos os tipos de páginas web, tem um custo de tempo elevado em relação ao primeiro método. Isso se deve ao fato de que neste método existe a abertura de um navegador internamente, espera do tempo de compilação, e só posteriormente é feita a coleta. Dependendo dos recursos do servidor ou conexão com a internet, esse processo pode passar dos 15 segundos por coleta.

5.3.3 Comparação entre os tipos de raspagem

Como dito já dito e também explicado, existe uma diferença grande entre os tempos de coleta entre sites estáticos e dinâmicos. Isso se dá pela natureza dos mecanismos usados em cada tipo de raspagem.

A seguir, é apresentado um estudo onde foram realizadas duas baterias de quatro testes, onde é comparado o tempo de resposta de raspagem dos dois tipos, em dois sites diferentes.

Para melhor entendimento dos testes realizados, é importante ressaltar três im-portantes métricas que foram usadas nos testes. A primeira é que os sites onde foram feitas as coletas, tratam-se de sites estáticos. Isso se deve ao fato de que para se ter uma

comparação mais precisa, era necessário ter um site alvo onde os dois motores de coleta funcionassem. Isso não seria possível em um site dinâmico, onde o motor de coleta de sites estáticos não seria capaz de coletar os dados.

A segunda métrica do estudo que é importante ser ressaltada, se refere a localidade dos alvos de coleta, onde foi escolhido um site nacional, e um site hospedado fora do país, objetivando observar as diferenças de performance quando fatores externos como a latência influenciam no tempo de resposta.

A última métrica importante a se ressaltar, é que no tempo de coleta em sites dinâmicos, já está descontado o 1 segundo de delay, que por padrão, a ferramenta já tem implementado, garantindo assim mais credibilidade aos dados mostrados.

Figura 9 – Teste de performance, site nacional.

Fonte: Elaborada pelo Autor (2022).

A primeira bateria de testes mostrada na figura 9, foi realizada no site Portal do IFF, e logo de cara podemos perceber uma grande diferença percentual nos tempos de coleta. Isso se deve ao fato de que o motor de busca estática nesse caso, tem uma eficiência aumentada, pois não sofre com a latência, e o tempo gasto é praticamente apenas o de fazer o download do html e realizar o parse dos dados, gastando em média cerca de 300 milissegundos, para realizar o processo completo. Já o motor de busca dinâmica, se mantém na média dos 15 segundos, o que já era esperado.

Figura 10 – Teste de performance, site internacional.

Fonte: Elaborada pelo Autor (2022).

Já na segunda bateria de testes, notamos uma diminuição significativa da diferença percentual entre as buscas. Dois pontos são necessários chamar a atenção, o primeiro é que ambos os motores sofrem com a latência, dado que a busca está sendo feita no site Worldometer.info, hospedado na data atual, fora do país no estado americano do Arizona.

Notamos um aumento nos tempos de coleta, visivelmente perceptível se compararmos o tempo de coleta em sites estáticos em relação à primeira bateria. O segundo ponto a se notar, é a curva de aumento do tempo de coleta que o motor de raspagem dinâmica realiza.

O motivo não tem a ver com a ferramenta, e sim a um mecanismo de proteção que vários sites implementam, na tentativa de diminuir os acessos automatizados provenientes de bots existentes na internet. A estratégia consiste em punir requisições repetidas de ferramentas, como por exemplo o motor de navegação que o firefox usa (Geckodriver), aumentando cada vez mais o tempo de resposta, culminando no encerramento da comunicação se as requisições repetidas continuarem.

Por fim, podemos perceber claramente as diferenças de performance entre os tipos de raspagem, sendo recomendável que sempre que possível, se use o tipo de raspagem estática, garantindo assim mais eficiência.

Documentos relacionados