Estou querendo um algoritmo que percorra, a partir de uma página, todos os links seus links recursivamente.
Já dei uma mexida com Parser de HTML, tentei implementar algo, mas não rolou. Abaixo o código que eu fiz até agora. ele tá imprimindo todos os links da página que eu passo por parâmetro.
Estou querendo um algoritmo que percorra, a partir de uma página, todos os links seus links recursivamente.
Já dei uma mexida com Parser de HTML, tentei implementar algo, mas não rolou. Abaixo o código que eu fiz até agora. ele tá imprimindo todos os links da página que eu passo por parâmetro.
Porém não estou conseguindo implementar a recursividade. Alguém poderia me ajudar com isso?
Algoritmos de spider são recursivos, mas não usam recursividade de metodo.
O que vc faz é ter um fila ( Queue) e coloca os links nela.
Enquanto a queue não estiver vazia, puxa o primeiro link, lê todos os links da página e joga na fila de novo, e assim vai.
Vc pode fazer com multithread fazendo várias thread usarem a mesma fila.
Ou seja, o segredo para a recursividade é a fila, e não um método especial ou um encadiamento especial de metodos.
E
entanglement
O bom de usar multithread nesse caso é que você pode fazer com que várias conexões sejam usadas ao mesmo tempo, o que otimiza o tempo de carregamento da página. Use um esquema de “produtor” / “consumidor”, onde o “produtor” é o cara que interpreta as páginas e põe os links encontrados na fila, e os “consumidores” são as threads que pegam as coisas da fila, checam se o tal link já não foi baixado (isso é importante!) e então começam a baixar os links. Se um link baixado for uma página, devolve para o produtor (o produtor também pode ter uma fila, mas de páginas já baixadas).