Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Joao Pedro Cruz

Web Crawler, problemas!

Recommended Posts

Desculpe a inconveniência mas tenho um problema , sério. Não estou conseguindo construir um Crawler que possa: Navegar pelo WWW e cópia páginas, cópiar todos os link's e conteúdo da página, para jogar em um banco de dados. Como sou iniciante em PHP fica complicado de fazer um Crawler, mesmo sendo fácil. Se possível, ao fazer a pesquisa, aparece o Nome do site, o conteúdo após e o url do site logo após o um pouco do conteúdo. Assim:

 

 

hti.png

 

 

A diferença é que o URL tem que ficar em em último lugar.

 

Quem pode me ajudar agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Mesmo sendo fácil"??? Você acha que contruir um google da vida é fácil... tá bom, realmente você é bem iniciante mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Melhor partir para outras linguagens c,c++...

 

 

Obs: Antes que alguem venha tacando pedra dizendo que o php é coisa divina criada por Deus(coisa que não é, e todos sabemos), estou sugerindo essas linguagens pois são com elas que foram escritos a maioria dos existentes, e por isso, creio eu, que será mais facil achar conteudo que possa ajudar...(se bem que já vi um mote de exemplo disso feito e ruby e em python...)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você tem contra o PHP? Por favor, se você quer ajudar em um fórum de PHP, ajude em PHP, a não ser que a seja algo relacionado com outras linguagens (geralmente JavaScript). Não é perseguição nem nada, mas não é a primeira vez que você diz que é melhor fazer em outra linguagem, se não gosta de PHP, vá para os fóruns de C, C++, Java, etc.

 

É totalmente possível fazer um desse em PHP. De uma forma simples, é necessário que você obtenha o HTML do site e trate usando DOM.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você tem contra o PHP? Por favor, se você quer ajudar em um fórum de PHP, ajude em PHP, a não ser que a seja algo relacionado com outras linguagens (geralmente JavaScript). Não é perseguição nem nada, mas não é a primeira vez que você diz que é melhor fazer em outra linguagem, se não gosta de PHP, vá para os fóruns de C, C++, Java, etc.

 

É totalmente possível fazer um desse em PHP. De uma forma simples, é necessário que você obtenha o HTML do site e trate usando DOM.

 

Já escutou a frase "Não existe X melhor que Y, o que exite é X melhor que Y para Z"

No caso C/C++ ou python é melhor que PHP para criar um crawler...Agora se tu acha que o PHP serve pra tudo, o problema não é meu, só to aqui dando uma opinião.

 

 

Totalmente absurdo isso com php é posivel sim fazer um crawler.

Não disse que era impossível.

 

será mais fácil achar conteúdo que possa ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, assim iremos perder o foco do tópico.. Eu, sinceramente, não estou com intenção e paciência para mostrar qual linguagem é melhor para fazer um Crawler.

 

No caso C/C++ ou python é melhor que PHP para criar um crawler...Agora se tu acha que o PHP serve pra tudo, o problema não é meu, só to aqui dando uma opinião.

 

Crawler é uma palavra genérica. Eu até concordaria se a intenção fosse criar um Google da vida por questões de performance, apenas.

 

Não, PHP não serve para tudo, ninguém falou isso nesse tópico. PHP não é C, tampouco Assembly. Todavia para um crawler ele é adequado, uma vez que estamos falando do ambiente web e uma ferramenta real de web, não de cálculos matemáticos demasiadamente complexos ou outros que podem também ser efetuados em web.

 

Eu apoio a ideia de opinião ser livre, contudo veja o tópico: um usuário do fórum está querendo ajuda em um crawler feito em PHP, em PHP, não em Java, C, C#, C++, etc. Eu nem abriria o bico se fosse apenas esse post, mas de 5 em 5 tópicos falando para mudar de linguagem... De nada adiantará manifestar seu "ódio" por PHP em tópicos de PHP, as pessoas não vão deixar de usá-lo pois Fulano falou que ele não é apropriado.

 

 

será mais fácil achar conteúdo que possa ajudar

 

 

Seguindo sua lógica: temos material maior sobre como criar um eCommerce em Ruby do que temos material sobre como criar um eCommerce em PHP, logo Ruby é melhor para criar eCommerce do que PHP.

 

Paro aqui e espero que não haja réplica à este post e que tudo possa seguir nos conformes, sem desviar do tópico por uma conversa de preferências. Se quer apedrejar o PHP, não é em um fórum de PHP que faz-se isso, é em um blog ou algum meio apropriado para ou até mesmo aqui, mas em um tópico relacionado.

 

-----------------------

 

Voltando..

 

Para fazer algo do tipo você precisa, primeiramente, de uma lista de websites que você deseja "crawlear". Essa lista pode ser feita manualmente e depois estendida através de detecção de links, se não estou enganado, é a forma que o Google faz.

 

Com essa lista, você necessita acessar as páginas, para fazer isso, poderá usar cURL.

 

E a partir do HTML gerado, através do DOM, poderá obter outros links para rastrear e conteúdo da página.

 

E com os dados obtidos você pode popular seu banco de dados e montar seu crawler.

 

Embora pareça simples, é complicado e eu não recomendaria para você, uma vez que é iniciante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ultima resposta foi bem explicativa, mas antes de mais nada sou obrigado a dizer, fazer um crawler não é fácil de jeito nenhum pra quem está começando, também estou trabalhando num e sei bem como é.

 

Mas vamos lá, é perfeitamente possível sim com php, o php é maravilhoso, mas pode ser feito em várias linguagens, talvez o mais apropriado seria até o Ruby....mas deixemos isto de lado.

 

Começando:

 

Primeiramente escolha uma pagina (url) para começar;

Depois utilize a biblioteca curl para pegar os dados desta página, ou pode ainda fazer isto com um simples get file contents do php;

Depois você pega os dados que vai querer guardar, como o título por exemplo, utilizando preg match all e guarda no seu bd;

Depois você pega os links desta página, também utilizando o preg match all e coloca cada um destes links na variavel url e assim volta o ciclo tudo de novo e vai populando seu bando de dados.

 

Se for um crawler para "varrer" a web você vai ter problemas com o tempo limite do php e quero ver ter banco de dados pra armazenar tudo.

 

Mas para teste pode colocar um count com um número limite de páginas para armazenar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tanto faz, vai ser preciso bastante espaço.

 

Tente fazer seguindo as dicas que te passei, eu fiz um assim.

 

Estude as funções que te falei que você irá conseguir.

 

Se eu puder ajudar em algo mais, é só falar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o php é maravilhoso...sem comentários.

por quais motivos não é?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o php é maravilhoso...sem comentários.

 

Sim meu amigo, o PHP para nós que trabalhamos com programação web é maravilhoso.

 

Agora, como eu mesmo citei, não é a linguagem mais apropriada para um WebCrawler, mas é possível.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, quanto de espaço você me recomenda?no mínimo?

 

Para eu poder te responder esta pergunta, você precisa saber exatamente o que você quer.

 

Qual seu objetivo com o webcrawler?

 

Que tipos de informação você vai guardar? Apenas os títulos e 5 linhas pra cada página? Algumas fotinhas? Todo o texto de cada página?

 

Quantas páginas você vai querer armazenar?

 

E outra coisa, de que forma você vai listar os resultados? Qual seu critério pra definir quais páginas aparecerão nas primeiras posições?

 

Faça a conta: Se você armazenar 10 linhas de texto pra cada página, e 10 linhas pesam por exemplo 2 KB, se você querer armazenar 40 milhões, faça 40 milhões vezes 2 e terá o resultado em KB.

 

Mas você vai precisar também dobrar o espaço necessário que será ocupado pelo algoritmo de rankeamento dos resultados.

 

E outra, a WEB conta, segundo o GOOGLE com mais de 1 trilhão de páginas únicas e a cada dia surgem cerca de 1 bilhão de páginas.

 

A sua ideia amigo de criar um buscador é muito boa, estamos precisando de players nesta área, mas você ainda é iniciante, eu sugiro trabalhar e estudar na net por muitos anos para compreende-la e só assim poder fazer algo, e outra, você irá precisar de muito $$.

 

Só pra você saber, quando o Google começou, eles gastavam 500 mil dólares por mês e ainda não ganhavam nada.

 

O que eu puder ajudar, estou aqui.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ponto 1: Ser iniciante não impede ninguém de seguir com um projeto.

 

Então o cara tem que fazer agendinhas, todo-lists, "crudão", até que algum entendido julgue-o não-iniciante suficiente pra trabalhar com crawling???

 

Ponto 2: Já é - no mínimo - o terceiro post recente onde associam crawling ao Google. Hoje a página de busca do Google já pode ser considerada, facilmente, uma aplicação web. É possível plotar gráficos, realizar cálculos algébricos complexos, descobrir tendências e métricas além de incontáveis algoritmos de relevância. Por favor, parem de associar crawling com Google. Google usa um crawler, mas não é só isso.

 

Seria a mesma coisa que aparecerem com dúvidas sobre geolocalização e aparecerem respostas como

"Cara, desiste, você nunca vai conseguir criar um Google Maps"

.

 

Não vou nem entrar no mérito da questão da linguagem, porque acho que o @Enrico Pereira já encerrou com maestria.

 

Quanto à técnica de crawling, na verdade, é bem simples. Como já levantaram, a forma mais fácil é aliar cURL e DOM. Nem regex precisa.

 

Duas coisas devem ser consideradas no algoritmo do spider: Profundidade e redundância. Profundidade significa quantos links a partir de http://forum.imasters.com.br eu devo seguir. Se uma profundidade não for determinada, você navegará a web inteira antes de terminar de processar o ponto de entrada (a primeira página).

 

Prova disso aqui: http://gizmodo.uol.com.br/um-desafio-de-navegacao-na-web-sem-teclado-e-sem-google/

 

Para o armazenamento, deve-se considerar apenas o que pode ser buscado. Em resumo, o conteúdo de [inline]<body></body>[/inline].

 

Se não for aplicado nenhum algoritmo de relevância, basta aplicar strip_tags e buscar com like/match.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A única ressalva que eu faria contra o PHP seria quanto à velocidade de processamento.

 

Por ser uma linguagem interpretada já é menos eficiente que uma linguagem compilada. Isso aliado a baixa média performance dos servidores, principal, mas não exclusivamente brasileiros, poderia gerar um pequeno gargalo na coleta das informações.

 

Porém, por ser uma aplicação pequena como você mesmo disse, é um projeto perfeitamente possível de se realizar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria a mesma coisa que aparecerem com dúvidas sobre geolocalização e aparecerem respostas como

 

No caso ele deixa explicito que quer construir um crawler...

 

 

"Cara, desiste, você nunca vai conseguir criar um Google Maps"

Todos podem criar um "google maps", quero ver é criar algo competitivo sem ter bilhões investidos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Engraçado, justamente eu que passei de forma simplificada um passo a passo super simples de como fazer um crawler, vem gente criticar.

 

Claro que qualquer iniciante pode fazer qualquer coisa, eu só sugeri estudar e trabalhar para entender melhor a web, assim conseguirá se criar algo melhor.

 

Eu mesmo fiz um crawler, por isto estou comentando neste fórum, pois conheço o assunto, mas quando comecei eu era iniciante em programação mas já experiente em seo, webdesign e muitas outras áreas.

 

Eu estou aqui para dar todo o apoio para que ele consiga fazer o crawler.

 

O último comentário do Cristiano está bem lógico e vai de encontro ao que eu disse.

 

Um ótimo programador pode criar quase qualquer coisa, agora por o negócio pra funcionar, e ainda mais lucrar, isto exige investimento e conhecimento extremo da área que vai entrar.

 

João, estou aqui para te ajudar no que precisar. Estude as funções que te passei e verá como não é impossível fazer um crawler, o difícil é ter $$ para manter este tipo de aplicação, mas como eu mesmo já disse, você pode por um cont para limitar o número de páginas que quer indexar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.