[1/2 Off] Discussão sobre Webcrawler

Olá amigos, estou escrevendo um artigo sobre WebCrawler, e queria saber dos amigos, se alguém conseguiu desenvolver algum?

Digo, pro artigo tenho que desenvolver um projeto, sou programador em Delphi, e sei um pouco de C++, Java sei somente o que aprendi na faculdade de Sistemas de Informação. Então, já procurei no google, e achei bastante informação, mas queria discutir com os amigos aqui, o que um WebCrawler deve ter, qual banco de dados para gravar as informações, a melhor forma de se fazer isso… ou seja, coisas que não se encontram na net facilmente… :oops:
Ah, por falar nisso, ninguém melhor que o “pai” dos webcrawler né!? Alguém sabe como é feito o Robo do Google? Em qual linguagem, qual banco de dados e etc?

Desde já agradeço aos amigos, que quiserem participar dessa discussão.

[]s

Na UFMG tem um curso de Recuperação de Informação dado pelo Berthier, que é co-fundador da Akwan, empresa que o Google comprou em BH, e atualmente ele é chief engineer lá do Google de BH.

A primeira parte da “lição de casa” dessa matéria é fazer um crawler.

Eu recomendo que você tente contato com o pessoal que fez essa matéria lá. Quem participa do Programa de Residência em tecnologia do Google também tem que fazer esse projeto, com umas specs até um pouco mais puxadas do que a da matéria.

Respondendo à sua pergunta, até onde se sabe, o robô to Google é feito em C++ e não usa banco de dados nenhum, salva tudo direto em arquivo, que é o mesmo que o pessoal da UFMG e do Programa de Residência tem que fazer.

Alheio a parte teórica, talvez uma implementação que podes dar uma olhada é no Nutch, um projeto relacionado ao Lucene, famoso indexador em Java.

Até!

[quote=Bani]Na UFMG tem um curso de Recuperação de Informação dado pelo Berthier, que é co-fundador da Akwan, empresa que o Google comprou em BH, e atualmente ele é chief engineer lá do Google de BH.

A primeira parte da “lição de casa” dessa matéria é fazer um crawler.

Eu recomendo que você tente contato com o pessoal que fez essa matéria lá. Quem participa do Programa de Residência em tecnologia do Google também tem que fazer esse projeto, com umas specs até um pouco mais puxadas do que a da matéria.

Respondendo à sua pergunta, até onde se sabe, o robô to Google é feito em C++ e não usa banco de dados nenhum, salva tudo direto em arquivo, que é o mesmo que o pessoal da UFMG e do Programa de Residência tem que fazer.[/quote]

Vixi… salva em arquivo? Isso não é meio estranho? Aja visto que acredito que eles tenham um banco de dados para indexar as paginas, e há paginas salvas no HD em arquivo… visto que tem a possibilidade de ver a página em cache.

E cara, tentei achar alguma informação no site da UFMG e me perdi… :cry:

[quote]
Alheio a parte teórica, talvez uma implementação que podes dar uma olhada é no Nutch, um projeto relacionado ao Lucene, famoso indexador em Java.[/quote]

Eu já tinha visto este projeto, o grande “problema” que eu encontrei nele, foi que ele junta 2 grandes projetos, o Nutch e o Lucene, e para entender o Nutch tem que necessariamente entender o Lucene… e para mim que não conheço muito bem java ficou meio complicado, mas obrigado pela dica.

[quote=titanius]…
Eu já tinha visto este projeto, o grande “problema” que eu encontrei nele, foi que ele junta 2 grandes projetos, o Nutch e o Lucene, e para entender o Nutch tem que necessariamente entender o Lucene… e para mim que não conheço muito bem java ficou meio complicado, mas obrigado pela dica.[/quote]
Então, mas até a última vez que eu olhei, os projetos estavam bem separados, com o código do Nutch bem alheio ao funcionamento do Lucene. Para somente o crawler, dá para pegar numa boa.

Lucene é um projeto interessantíssimo, estou fazendo um estudo com ele e estou me divertindo muito.

Até!

[quote=titanius]
Vixi… salva em arquivo? Isso não é meio estranho? Aja visto que acredito que eles tenham um banco de dados para indexar as paginas, e há paginas salvas no HD em arquivo… visto que tem a possibilidade de ver a página em cache.[/quote]

Não, é tudo arquivo mesmo. O índice também.
Tem que ver que os caras otimizam até o último nanosegundo as coisas… hehehe A gente teve uma explicação de porque construir o índice a partir de um arquivo sequencial no HD era muito bom e tal, mas não me peça para re-explicar essas coisas…

De qualquer forma, banco de dados é otimizado para um uso mais geral, e eles usam arquivos e estruturas de dados bastante específicas para o que eles estão fazendo.

Aqui está o link do outro professor (e co-fundador da Akwan) da disciplina da UFMG: http://homepages.dcc.ufmg.br/~nivio/br/teaching-ri-07.php
Lá tem um PDF sobre crawling.

[quote=titanius]
Ah, por falar nisso, ninguém melhor que o “pai” dos webcrawler né!? Alguém sabe como é feito o Robo do Google? Em qual linguagem, qual banco de dados e etc?
[]s[/quote]

De uma olhada no link abaixo.

http://labs.google.com/papers/bigtable.html

[quote] De uma olhada no link abaixo
http://labs.google.com/papers/bigtable.html .[/quote]

Valeu, tem coisas interessantes lá… :smiley:

[quote=Bani]Não, é tudo arquivo texto mesmo. O índice também.
Tem que ver que os caras otimizam até o último nanosegundo as coisas… hehehe A gente teve uma explicação de porque construir o índice a partir de um arquivo sequencial no HD era muito bom e tal, mas não me peça para re-explicar essas coisas…
[/quote]

Olá Bani, você fez essas aulas? Ué podemos trocar algumas ideias e como implementar um então, podemos?

A principio, como seria dividido um robo? penso desta forma:

Robo 1: Responsável por “baixar” as páginas da internet, de acordo com os links obtidos pelo robo 2
Robo 2: Reponsável por “varrer” as paginas salvas em busca de links, e salvar tais links.
robo 3: REsponsavel pela “indexação” e “validação” das páginas, entende-se validação como sendo o seguinte: verificar se já não existe esta pagina na fila de “downloads”, se existi incrementa o page_rank e por aí vai.

Seria mais ou menos isso? Estou indo pelo caminho certo?

Sei que pode parecer uma pergunta meio idiota, mas com certeza fazer isso no Linux, é bem melhor que no Windows, não é? :roll:

[]s

Fiz, mas acho melhor você simplesmente ler o pdf lá no site no Nivio. Não tenho muito interesse em ficar discutindo o tema.

Mas uma das coisas mais importantes e que você está ignorando no seu robô, caso você pretenda trabalhar com um grande volume de URLs e respeitar as regras que existem, é um scheduler.

[quote=Bani]Fiz, mas acho melhor você simplesmente ler o pdf lá no site no Nivio. Não tenho muito interesse em ficar discutindo o tema.

Mas uma das coisas mais importantes e que você está ignorando no seu robô, caso você pretenda trabalhar com um grande volume de URLs e respeitar as regras que existem, é um scheduler.[/quote]

esse Sheduler seria para que? para ter horarios de rodar cada um deles? seria +/- isso?

[]s

Não, seria pra montar a fila de o que você vai baixar. Simplesmente ir baixando na ordem que encontra não é uma boa idéia.