2º Trabalho Prático: Web Crawler

O objectivo global deste trabalho é proporcionar uma forma de experimentar a aplicação de software de comunicações, no desenvolvimento de um Web Crawler. Um Web Crawler é uma aplicação cliente que visita URLs e executa diversas tarefas, tais como descarga de conteúdos de um URL, verificação da validade das ligações de uma página HTML, construção de um índice para um motor de busca, etc.

O trabalho decompõe-se em cinco partes, cada uma das quais a ser desenvolvida no prazo de uma semana:


Parte I

Numa primeira parte do trabalho, será desenvolvido um Web Crawler muito simples que apenas descarrega os conteúdos de um URL e visualiza-os no dispositivo de sáida (standard output). Durante o trabalho, diversos componentes e aspectos da linguagem Java terão de ser aprofundados, bem como alguns padrões de software terão de ser aprendidos.

Para começar, escrever-se-á um programa: um cliente Web Crawler.


Cliente Web Crawler

O cliente Web Crawler deve realizar as seguintes actividades:

O cliente deve imprimir as mensagens de erro apropriadas e abortar com um código de valor 1, se alguma das chamadas ao sistema não trabalharem adequadamente. Se tudo corre normalmente, o programa deve retornar um valor de 0.

Sugere-se que se garanta que o cliente não fica bloqueado indefinidamente, caso o servidor não obedeça ao protocolo HTTP ou algum dos computadores falhe. Assegurar por exemplo que todas as chamadas de sistema (connect, send, recv) são canceladas caso num determinado período de tempo pré-definido o servidor falhar em responder prontamente.


Parte II

Na segunda parte do trabalho, será desenvolvida uma versão mais sofisticada do Web Crawler que visita um URL para determinar se é válido ou não. Diversas partes do trabalho anteriormente desenvolvido poderão e deverão ser reutilizadas.

Ao programa Cliente Web Crawler adicionar-se-á um verificador de URL's.


Cliente Web Crawler

O cliente Web Crawler deve realizar as seguintes actividades:

Para evitar ciclos infinitos no caso de existirem ciclos no grafo de URL's, deve-se usar uma cache de URL's que detecte os ciclos e devolva o tipo de resposta armazenado.

Nesta fase, não é necessário ter a preocupação de validar os URL's por uma determinada ordem. Sugere-se uma pesquisa em profundidade (depth-first) atendendo a que a forma recursiva é a mais fácil para  validar os URL's. Na parte III do trabalho, explorar-se-ão outras abordagens.


Parte III

Na terceira parte do trabalho, pretende-se evoluir o Web Crawler da parte II por forma a se poder visitar todos os links a partir de um URL inicial numa ordem FIFO para determinar se é válido ou não.


Cliente Web Crawler

O cliente Web Crawler deve realizar as seguintes actividades:

	[-o FIFO|LIFO]

Para este trabalho, não ter preocupações com optimizações para manipulação de ficheiros HTML muito grandes. Estas optimizações poderão ser feitas posteriormente.

Para o desenvolvimento desta parte do trabalho sugere-se a aplicação do Command Pattern por forma a armazenar e processar os pedidos em FIFO ou ordem LIFO.


Parte IV

Na quarte parte do trabalho, pretende-se evoluir o Web Crawler por forma a poder ser utilizado em cliente/servidor.


Cliente Web Crawler

Adicionalmente às funcionalidades já suportadas anteriormente, o Web Crawler deve realizar as seguintes actividades:

	[-standalone | -server | -client]

Parte V

Na quinta parte do trabalho, pretende-se evoluir a parte servidor do Web Crawler para suportar 'multithreading' por forma a poder servir diversos clientes em simultâneo.


Voltar à pagina Web de PC.