Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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:
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.
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>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.
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
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.
legal, mano...
vou ver se crio um tb, fazeno eu vou postando aqui
beleza, eu tbm, assim que eu for fazendo e for dando certo o código eu posto aqui e se surgirem dúvidas eu posto tbm.
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 !?!?!
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
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...
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 ?