Ir para conteúdo

POWERED BY:

Arquivado

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

kania

web crawler

Recommended Posts

Fala galera, escuta alguém aqui já desenvolveu um web crawler em asp?

Um que pegue somente alguns dados específicos dentro de uma determinada pagina.

 

Exemplo:

 

Rodo o arquivo web crawler e ele vareo site em questão retorna os seguintes dados:

 

Nome:

Telefone:

Email:

Endereço:

 

 

Etc

 

Ou seja pegar somente o que for programado para pegar, afim de não encher o banco de dados com informações que não sejam úteis.

 

Nunca fiz um web crawler então nem sei por onde começar, dei uma pesquisada no assunto na net, mas a maioria em asp que achei utiliza um componente para rodar o processo.

ai entra outra pergunta, em asp tem como fazer sem utilizar um componente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que teria de usar fso ou algo como o usado pelo xmlhttprequest no ajax, e com uma expressão regular varrer o texto ou código em busca de determinadas palavras e caso as encontre, manipula-las da forma que achar mais conveniente.

 

Nunca precisei mexer com isso, mas tentaria a principio algo assim.

Viu se no laboratório de scripts não tem algo que sirva como base ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Vinicius Ianni, então fera, olhei no laboratório e não achei nada neste contexto, achei algumas coisas em PHP mas nada dentro do que eu estou precisando desenvolver agora.

 

Dentro desta sugestão sua sugestão, você poderia me ajudar a iniciar o processo de desenvolvimento.

Já fiz varias coisas com FSO para manipular arquivos dentro de pastas eu algumas com o xmlhttprequest, mas nunca um crawler para pegar dados dentro de um site.

 

Veja o que me pediram aqui na empresa.

Querem que eu desenvolva uma pagina onde eles coloquem o endereço do site tipo http://www.buscape.com.br/ e esta pagina capture os dados que eles precisam para fazer um relatório de estatísticas, neste caso aqui eu teria alguns campos que o usuário vai digitar quais dados ele quer capturar, tipo:

 

- Nome do produto

- Valor

- Empresa fornecedora

 

E assim por diante, ou seja ele iria acrescentando campos conforme a quantidade itens que ele quer capturar daquela pagina

 

Montar o formulário com campos dinâmicos via jquery, inserção no banco de dados, relatórios estatísticos com gráficos, estas coisas eu faço tranquilo, só esta situação de pegar estes dados na página que esta complicado de entender como fazer.

 

Até poderia ser feito e deixado aqui como script de estudo para outros depois.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo usando o COM Chilkat.Spider

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%

set spider = Server.CreateObject("Chilkat.Spider")

set seenDomains = Server.CreateObject("Chilkat.CkStringArray")
set seedUrls = Server.CreateObject("Chilkat.CkStringArray")

seenDomains.Unique = 1
seedUrls.Unique = 1

seedUrls.Append "http://directory.google.com/Top/Recreation/Outdoors/Hiking/Backpacking/"


spider.AddAvoidOutboundLinkPattern "*?id=*"
spider.AddAvoidOutboundLinkPattern "*.mypages.*"
spider.AddAvoidOutboundLinkPattern "*.personal.*"
spider.AddAvoidOutboundLinkPattern "*.comcast.*"
spider.AddAvoidOutboundLinkPattern "*.aol.*"
spider.AddAvoidOutboundLinkPattern "*~*"


spider.CacheDir = "c:/xanburzumCache/"
spider.FetchFromCache = 1
spider.UpdateCache = 1

Do While seedUrls.Count > 0

   url = seedUrls.Pop()
   spider.Initialize url


   domain = spider.GetDomain(url)
   seenDomains.Append spider.GetBaseDomain(domain)

   For i = 0 To 5
       success = spider.CrawlNext()
       If (success <> 1) Then
           Exit Do
       End If


       Response.Write spider.LastUrl & "<br>"


       If (spider.LastFromCache <> 1) Then
           spider.SleepMs 1000
       End If

   Next


   For i = 0 To spider.NumOutboundLinks - 1

       url = spider.GetOutboundLink(i)
       domain = spider.GetDomain(url)
       baseDomain = spider.GetBaseDomain(domain)
       If (Not seenDomains.Contains(baseDomain)) Then
           seedUrls.Append url
       End If


       If (seedUrls.Count > 1000) Then
           Exit Do
       End If

   Next

Loop
%>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa xanburzum, então este exemplo com o Chilkat eu cheguei a encontrar, porem o servidor precisa ter este componente instalado nele, diante disto acabei deixando de lado e tentando achar uma forma de fazer sem a utilização de componente.

 

Estou vendo como seria possível fazer conforme o Vinicius Ianni sugeriru com FSO e xmlhttprequest, minhas dúvidas são porque nunca fiz este tipo de programação para pegar dados de paginas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

este code também usa o FSO, mas você pode adaptá-lo para o uso sem COM

tem como fazer em ASP.Net, se seu server suporta .Net

olha este tutorialcom .Net, veja a lógica e modifque

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa v valeu a dica, este código eu também havia encontrado, é nele que estou me baseando para poder desenvolver o que preciso.

Mas valeu a força, vou continuar aqui tentando desenvolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal, mano...

vou ver se crio um tb, fazeno eu vou postando aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ja pensou em fazer um formulário interativo, usando os eventos onfocus e onblur....

e pegando apenas os preenchidos atraves de um for, e se quiser adiconar mais campos fazendo por js !?!?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa xanburzum, então a parte do formulário é tranquilo, estou fazendo com jquery, e o usuário vai poder preencher quantos campos quiser com os itens que ele quiser pegar, então ele vai adicionando campos input text e nestes campos ele vai colocando o tipo de dado que ele quer recuperar, exemplo:

 

Quero pegar a class nome: coloco no campo .nome

Quero pegar o ID telefone_fixo: coloco no campo #telefone_fixo

 

E assim por diante para todos os itens da pagina que o usuário quer resgatar.

 

Um campo é fixo e obrigatório que é o da URL que ele quer resgatar estes dados

 

Meu problema porque nunca fiz esta lógica e realmente na parte em que eu tenho que entrar na URL digitada, e começar a varrer o site pegando os dados e os inserindo no banco de dados, seria como recuperar dados vindo de uma URL, como eu faço em um XML por exemplo, só que neste caso eu não estou sabendo omo montar esta rotina, estou batendo a cabeça para fazer algo FSO conforme sugerido pelo amigo acima.

 

Se alguém ai tiver alguma ideia de como começar este código, gostaria de montar ele por aqui e depois poder deixar ele como script no laboratório

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um post que coloquei usando js para inserir a quantidade de campos que quiser e recupero eles atraves da url tb, dá uma olhada nele pode te ajudar...

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.