Foros del Web » Programando para Internet » ASP Clásico »

mini google bot

Estas en el tema de mini google bot en el foro de ASP Clásico en Foros del Web. simplemente como curiosidad, me gustaria poder o al menos saber como hacer para poder crear un pequeño robot de busqueda, basicamente lo unico que tendria ...
  #1 (permalink)  
Antiguo 27/05/2013, 08:10
ksanet
Invitado
 
Mensajes: n/a
Puntos:
mini google bot

simplemente como curiosidad, me gustaria poder o al menos saber como hacer para poder crear un pequeño robot de busqueda, basicamente lo unico que tendria que hacer es buscar paginas en internet y agregarlas a una base de datos pero no sabria como indicarle que empieze a navegar ni como decirle que vaya saltando de una web a otra.

tengo una pequeña idea.

para empezar le digo que analice una pagina web ej: www.ejemplo.com

y en esa web se ponga a leer todos los links que haya en ella, tanto internos como externos y todos los externos (simplemente comparando con el dominio) salte a ellos y vuelta a empezar.

pero como le hago que "navegue" por una web, osea que siga los links?, quizas pueda sar un poco complicado pero estoy muy interesado.
  #2 (permalink)  
Antiguo 27/05/2013, 09:45
ksanet
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mini google bot

OJO, no pido a nadie que me indique como indexar todo internet ni nada parecido, solo quiero saber como leer el codigo fuente de una pagina y poder saltar de enlace en enlace.

EJ:
Mi web
|_Link1
|_Link2
|_Link3
|__Link3.1
|__Link3.2
|_LinkExterno

Web a la que pertenece LinkExterno
|_Link1
|_Link2....

Pues que el mini programa lea esas 2 webs navegando por sus links

No se si es posible hacerlo desde ASP
  #3 (permalink)  
Antiguo 27/05/2013, 09:55
Avatar de AlejandroDiegoo  
Fecha de Ingreso: enero-2013
Ubicación: Madrid
Mensajes: 72
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: mini google bot

Es muy sencillo.

Scrapeas una página (en caso de ASP clásico supongo que utilizarás msxml2). Con ayuda de expresiones regulares sacas el título, la descripción y todos los enlaces para guardarlos en una tabla a modo de cola. Los internos primero y los externos después.

Empiezas a recorrer la cola y haces lo mismo con cada uno de los enlaces.

Lo ideal sería hacer un ejecutable y programarlo para que se ejecute cada x tiempo y procese toda la cola a la vez que va generando una nueva cola para la siguiente ejecución.

De todas formas, necesitarás poner límites en mucho sentidos: tiempo de ejecución, páginas hijas a analizar, etc. Porque se te puede ir de las manos.

Y ya no hablemos de que cuentes con los recursos necesarios a nivel de máquina. Porque tener un script en ejecución casi permanente se nota. :/
__________________
Games Custom
CodeluxeStudio
Skype: AlejandroDiegoo
  #4 (permalink)  
Antiguo 27/05/2013, 09:57
Avatar de AlejandroDiegoo  
Fecha de Ingreso: enero-2013
Ubicación: Madrid
Mensajes: 72
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: mini google bot

El primer enlace de mi firma es un mini google bot ;)
__________________
Games Custom
CodeluxeStudio
Skype: AlejandroDiegoo
  #5 (permalink)  
Antiguo 27/05/2013, 10:09
ksanet
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mini google bot

claro, a ver, es solo un pequeño experimiento, en principio solo quiero hacer que leea hasta 3 diferentes links externos, como tu dices si se me va de las manos puedo comenzar a indexar internet completo y por muchos MB que tenga de ram creo que no soportaria tanto.

Cita:
Scrapeas una página (en caso de ASP clásico supongo que utilizarás msxml2).
no tengo ni idea de que es eso intentaré investigar, nunca he llegado a hacer nada de eso.

Si me pudieseis dar algun pequeño ejemplo como por ejemplo leer el titulo de una pagina con eso puedo comenzar a trastear (imagino que leyendo lo que ponga entre las tags <title> y </title>
  #6 (permalink)  
Antiguo 27/05/2013, 10:15
Avatar de AlejandroDiegoo  
Fecha de Ingreso: enero-2013
Ubicación: Madrid
Mensajes: 72
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: mini google bot

Código PHP:
nURL "http://www.ejemplo.com"
  
Set xmlhttp Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
  
xmlhttp.open "POST"nURLfalse
  xmlhttp
.setRequestHeader "Content-Type""application x-www-form-urlencoded"
  
xmlhttp.send()
  
Response.write xmlhttp.responseText
  Set xmlhttp 
nothing 
Con ese código obtienes el código fuente de tu página (xmlhttp.responseText). Una vez obtenido el código fuente, podrás crearte tus funciones para sacar enlaces a través de expresiones regulares.
__________________
Games Custom
CodeluxeStudio
Skype: AlejandroDiegoo
  #7 (permalink)  
Antiguo 27/05/2013, 10:48
ksanet
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mini google bot

pero que tipo de expresiones tendria que utilizar por ejemplo para sacar la etiqueta title?
  #8 (permalink)  
Antiguo 27/05/2013, 10:53
Avatar de AlejandroDiegoo  
Fecha de Ingreso: enero-2013
Ubicación: Madrid
Mensajes: 72
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: mini google bot

<title>(.*?)</title>
__________________
Games Custom
CodeluxeStudio
Skype: AlejandroDiegoo
  #9 (permalink)  
Antiguo 27/05/2013, 13:37
ksanet
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mini google bot

no entiendo muy bien. tengo de momento este codigo que supuestamente me saca el codigo html

Set objXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
objXML.Open "GET", "http://www.ksanet.es/test.html", false
objXML.Send("")
Response.Write objXML.responseText

imagino que objXML.responseText es lo que contiene el codigo fuente, pero de ahi como pregunto por un texto concreto?

y como meto en una variable el trozo de texto concreto?
  #10 (permalink)  
Antiguo 27/05/2013, 13:47
ksanet
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mini google bot

Variable = objXML.responseText

Variable2.Pattern =<title>(.*?)</title>

estaria bien eso?
  #11 (permalink)  
Antiguo 28/05/2013, 04:49
ksanet
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mini google bot

he encontrado el siguiente ejemplo que supuestamente hace precisamente eso

Response.Buffer = True

Dim strURL, objXMLHTTP, objXML, strContents
Dim objRegExp, strHTML, strPattern, colMatches, strTitle


Set objXMLHTTP = Server.CreateObject ("MSXML2.ServerXMLHTTP")
'Or if this doesn't work then try :
'Set objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")

objXMLHTTP.Open "GET", "http://www.ksanet.es/test.html", false

objXMLHTTP.Send

strContents = objXMLHTTP.ResponseText

Set objXMLHTTP = Nothing

Set objRegExp = New RegExp

strPattern = "<title>(.*?)<\/title>"

objRegExp.Pattern = strPattern
objRegExp.IgnoreCase = True
objRegExp.Global = True

Set colMatches = objRegExp.Execute(strContents)

If colMatches.Count > 0 then
strTitle = objMatches(0).Value
Else
strTitle = ""
End If

Set objRegExp = Nothing

Response.write(strTitle)

me falla la linea de color rojo con el siguiente error:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'objMatches'


por que no me acepta eso?

Etiquetas: bot, dato, google, mini
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:28.