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

SPIDER: descargar

Estas en el tema de SPIDER: descargar en el foro de ASP Clásico en Foros del Web. Posteo aquí la respuesta al mensaje de RakoVky sobre su Spider, para que lo puedan descargar todos lo que les pueda servir: ------------------ He retocado ...

  #1 (permalink)  
Antiguo 04/05/2003, 07:17
Avatar de Aston  
Fecha de Ingreso: mayo-2001
Ubicación: Madrid
Mensajes: 933
Antigüedad: 23 años, 1 mes
Puntos: 0
SPIDER: descargar

Posteo aquí la respuesta al mensaje de RakoVky sobre su Spider, para que lo puedan descargar todos lo que les pueda servir:

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

He retocado el Spider y creo que ha mejorado un poco, si no en la respuesta, si en optimización de código.

Aún se pueden mejorar cosas como los sitios que ponen antes el CONTENT que el NAME en cuyo caso sigue sin devolver nada, y el problema de los acentos que se puede resolver usando el método ResponseBody de XMLHTTP en lugar de ResponseText y leyendo el retorno con Request.BinaryRead. Yo no dispongo de mucho más tiempo. Quizá algún maestro...

Los siguientes errores han sido arreglados:

1. Daba un error cuando no se encontraba la página. Ahora se detecta y te lo comunica.

2. Este otro bug consistía en que no daba error y no ocurría nada pero no devolvía ningún valor para el sitio encontrado. Este error era debido a que en las cadenas a buscar, por ejemplo "<meta name='description' content='" en muchos siitios, entre palabras dejaban más de un espacio y en consecuencia, no se encontraba. También se ha resuelto para una gran mayoría de los casos.

3. Este otro era igual que el anterior, pero en este caso, se daba porque hay sitios que en vez de estar escritos en HTML, están escritos en XHTML y los metas acaban en vez de en '> en espacio /> y al no encontrar etiqueta final devolvía mucha basura. Esto está solucionado.

El Spider retocado se puede descargar en http://www.laventanita.net/tutorial/spider.zip

No lo he dejado para probar poque si se hacen varias peticiones al mismo tiempo y algunas son fallidas el servidor se queda pillado. Es algo a tener muy en cuenta.

Mejor descargar el ejemplo que copiar el código de aquí, para que las sentencias y bucles no pierdan la sangría. Cuestión de ahorrase trabajo. No obstante os pongo el código y explico los cambios:

Sólo comentar que en este ejemplo elimino la página Default.asp y ahora Spider.asp muestra el formulario y realiza la búsqueda, con lo que todo queda en un página.

Igualmente el código que ha quedado es unas 8 veces menor.


Spider.asp

<%@ LANGUAGE="VBSCRIPT"%>
<%Option Explicit
Response.Expires = -1000
Response.Buffer = False%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Spider</title>

Unos estilitos y así ya me servía para mi sitio. Sólo debeis cambiar estos 4 estilos y ya...

<style type="text/css">
body { font-size: 11px; font-family: Verdana }
.fPeq { font-size: 11px; font-family: Verdana }
.fBlan { font-size: 11px; font-family: Verdana; background-color: #FFFFFF; border: 1px solid #A5ACB2 }
.fCafe { font-size: 11px; font-family: Verdana; background-color: #F5E8D8; border: 1px solid #BD7B42 }
</style>
</head>
<body><%

Ahora sólo declaramos 6 variables...

Dim oXML, cURL, cConten, cKey, cDescrip, cTit

cURL = Request.Form("url")
If cURL <> "" Then

On Error Resume Next
Set oXML = Server.CreateObject("Microsoft.XMLHTTP")
oXML.open "GET", cURL, False
oXML.Send

Controlamos el error cuando el sitio no existe...

If Err.number <> 0 Then
Response.Write "Ha sido imposible encontrar el sitio. " & "[<a href='javascript:history.back()'>Volver</a>]"
Response.End
End If

If oXML.statusText = "OK" Then
cConten = oXML.ResponseText

Recogemos los metas. Las 147 líneas que se usaban para esto se quedan en sólo 3!! llamando a una pequeña función EncuentraCad() que se reutiliza para los 3 valores.

Para ello, dentro de esta función convertimos todo a minúsculas una sola vez para hacer la comparación pero los datos los extraemos de la cadena normal, respetando las mayúsculas que puedan tener, sobre todo el título y la descripción.


cTit = EncuentraCad(cConten, "<title>", "</title>")
cDescrip = EncuentraCad(cConten, "meta name='description' content='", ">")
ckey = EncuentraCad(cConten, "meta name='keywords' content='", ">")%>

Mostramos los datos en un formulario con sus respectivos inputs y así podemos copiar y pegar...

<form name="Mostrar">
<table width="700" border="0">
<tr>
<td class="fPeq"><b>URL</b></td>
<td><input class="fBlan" type="text" name="Url" size="100" value="<%=cURL%>" onfocus="this.className='fCafe'" onblur="this.className='fBlan'"></td>
</tr>
<tr>
<td class="fPeq"><b>Título</b></td>
<td><input class="fBlan" type="text" name="Titulo" size="100" value="<%=cTit%>" onfocus="this.className='fCafe'" onblur="this.className='fBlan'"></td>
</tr>
<tr>
<td class="fPeq"><b>Descripción</b></td>
<td><input class="fBlan" type="text" name="Descripcion" size="100" value="<%=cDescrip%>" onfocus="this.className='fCafe'" onblur="this.className='fBlan'"></td>
</tr>
<tr>
<td class="fPeq" valign="top"><b>Keywords</b></td>
<td><textarea class="fBlan" name="Keywords" cols="99" rows="5" onfocus="this.className='fCafe'" onblur="this.className='fBlan'"><%=cKey%></textarea></td>
</tr>
</table>
</form>
<hr class="fPeq"><%

Se controla de nuevo si no se encontró la página...

Else
Response.Write "Error obteniendo página. " & oXML.statustext & " [<a href='javascript:history.back()'>Volver</a>]"
End If
Set oXML = Nothing
End If%>

Formulario para la búsqueda...

<table width="450" border="0">
<tr><td>
<form name="form1" method="post" action="spider.asp">
<input class="fBlan" type="text" name="url" value="http://" size="45" onfocus="this.className='fCafe'" onblur="this.className='fBlan'">
<input class="fPeq" type="submit" name="Submit" value="Indexar">
</form>
</td></tr>
</table>

<br><br><a href="spider.zip">Descargar Spider (1,5 Kb)</a>

</body>
</html><%

'-------------------- FUNCIONES

Esta es la sencilla función que llamamos arriba y que parsea el texto...

Function EncuentraCad(cCad, cDesde, cHasta)
'Encuentra una subcadena entre dos subcadenas dadas
Dim cAct, cOri, nIni, nFin

cAct = Replace(cCad, " ", " ") 'Controlando dobles espacios... Originaba el error!!
cOri = Replace(cAct, Chr(34), "'") 'Original, respeta mayúsculas, dobles comillas por comillas simples...
cAct = LCase(Replace(cAct, Chr(34), "'")) 'Dobles comillas por comillas simples y pasando a minúsculas...
nIni = InStr(1, cAct, cDesde)
If nIni = 0 Then Exit Function
nIni = InStr(1, cAct, cDesde) + Len(cDesde)
nFin = InStr(nIni, cAct, cHasta) - nIni

EncuentraCad = SinFull(Mid(cOri, nIni, nFin))
End Function

Esta otra función se añade para quitar la barra, la contrabarra y la comilla simple final, si existiese, ya que para el código XHTML como cadena final sólo buscamos > y no '> como antes.

Lo único que hace son varios Replace() metiendo los valores a eliminar en un array o arreglo. Si se añaden más caracteres al array, no olvidar aumentar el contador i


Function SinFull(cCad)
'Devuelve una cadena sin guarrerías
Dim i, aCon
aCon = Array("/", "\", "'")
For i = 0 To 2
cCad = Replace(cCad, aCon(i), "")
Next
SinFull = Trim(cCad)
End Function%>

Fin Spider.asp

Espero les sirva, un saludote.

Última edición por Aston; 04/05/2003 a las 08:18
  #2 (permalink)  
Antiguo 18/05/2003, 16:12
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
hola, muchas gracias aston, alguien ha podido reparar estos errores ? como el de los acentos o las ñ, espero alguien me pueda colaborar ya que estoy utilizadno este spider para un pequeño buscador en mi sitio, y todavia salen caracteres extraños cuando ve un acento o la letra ñ ,
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #3 (permalink)  
Antiguo 02/06/2003, 10:33
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Mostrar acentos y eñes cuando se utiliza XMLHTTP

  #4 (permalink)  
Antiguo 02/06/2003, 10:47
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mex
Mensajes: 140
Antigüedad: 21 años, 6 meses
Puntos: 0
Perdon pero ¿que es el spider?
__________________
escribiendo mi libro de AJAX
  #5 (permalink)  
Antiguo 02/06/2003, 10:58
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
gracias helbira, pero ya habia provado ese codigo:

dim HTTP
set HTTP=Server.CreateObject("Microsoft.XMLHTTP")
HTTP.open "GET", Url , False
HTTP.setRequestHeader "Accept-Language", "sp"
HTTP.setRequestHeader "Pragma", "no-cache"
HTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
HTTP.Send



y no me sirvio, no me corrigio el error del spider todavia mesigue apareciendo las palabras con ñ o con tildes malas, en ves de esas letras me aparece un signo de interrogacion y me aparece cortada la palabra.. aston comento en este mensaje que sabia como hacerlo pero no lo entendi..
espero nos puedas colaborar para corregir este error y perfeccionar este excelente spider..
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #6 (permalink)  
Antiguo 03/06/2003, 01:56
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Te dejo una url para que te puedas descargar el codigo donde yo usé lo de los acentos y lo pruebes, verás como sí funciona:

http://www.isotrol.com/webIsotrol/spider_asp.zip

Le puse extensión .zip para que te lo puedas descargar pero no es un zip auténtico. Sólo tienes que renombrarle la extensión a .asp.

Llamando directamente al archivo funciona pero on lo hagas desde el enlace que te dejé porque ese servidor es de php y no de asp.

Te lo he incializado con una url que contiene acentos para que lo veas.

De paso te comento que mo código falla con algnuas páginas. se queda colgado. En principio sólo me falla con páginas dinámicas en asp pero por ejemplo, la que llama el archivo tal como te lo he dejado también es dinámica (php) y funciona correctamente. Sabes por qué puede ser?

Un beso

El enlace no funciona.... :(

Si me das una dirección te lo mando por correo
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #7 (permalink)  
Antiguo 03/06/2003, 04:20
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 22 años, 2 meses
Puntos: 1
efra, el SPIDER es un código que muestra los Tags de la web que solicitas, mostrando así su propia descripción, palabras claves, etc.

Saludos.
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...

Última edición por Fr@Nc3$c0; 03/06/2003 a las 04:24
  #8 (permalink)  
Antiguo 03/06/2003, 08:54
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
muchas gracias, lo he intentado bajar por tu direccion y no me funciona me dice que no existe el archivo, te lo agradezco mucho si me lo mandas a

[email protected]

yo tengo tambien el spider y le he hecho varios cambios solo me falta lo de los acentos despues te comento

muchas gracias.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #9 (permalink)  
Antiguo 05/06/2003, 04:55
Avatar de Aston  
Fecha de Ingreso: mayo-2001
Ubicación: Madrid
Mensajes: 933
Antigüedad: 23 años, 1 mes
Puntos: 0
Hola Helbira:

He probado con el código que pusiste en el otro mensaje pero me siguen saliendo signos raros.

Si pudieras enviarme tu código para trastear un poco con él te lo agradecería.

Mi correo: [email protected]

Muchas gracias y un saludote.
  #10 (permalink)  
Antiguo 05/06/2003, 05:00
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Es que aparte de ese codigo tienes que sustituir el responseText por responseBody

Si sigue sin funcionarte te lo envio.

Suerte

Última edición por Helbira; 05/06/2003 a las 05:03
  #11 (permalink)  
Antiguo 05/06/2003, 05:25
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 7 meses
Puntos: 4
Oye, muy bueno, no sabía que esto existía.
Muchas gracias.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #12 (permalink)  
Antiguo 05/06/2003, 12:06
Avatar de Aston  
Fecha de Ingreso: mayo-2001
Ubicación: Madrid
Mensajes: 933
Antigüedad: 23 años, 1 mes
Puntos: 0
Vaya, lo siento Helbira, con ResponseBody me devuelve todo con interrogaciones y cruces, así:

????????††????†???????•????

Debe ser una tontería, seguro me falta algún parámetro.

Bueno, de nuevo un saludote.
  #13 (permalink)  
Antiguo 06/06/2003, 01:25
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<%
Sub obtenerInformacion(Url)
dim HTTP
set HTTP=Server.CreateObject("Microsoft.XMLHTTP")
HTTP.open "GET", Url , False
HTTP.setRequestHeader "Accept-Language", "sp"
HTTP.setRequestHeader "Pragma", "no-cache"
HTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

HTTP.Send
stu=HTTP.statusText
if HTTP.statusText="OK" then
body8209 = HTTP.responseBody
sOut = ""
For i = 0 to UBound(body8209)
sOut = sOut & chrw(ascw(chr(ascb(midb(body8209,i+1,1)))))
Next
strFileContents=sOut
else
Response.write "Error obteniendo Página " & HTTP.statustext
end if
set HTTP = nothing

Dim key1, key2, errorkey, errordes
strFileContents = replace(strFileContents, "<meta name=keywords", "<meta name=""keywords""")
strFileContents = replace(strFileContents, "<meta NAME=keywords", "<meta name=""keywords""")
strFileContents = replace(strFileContents, "<META NAME=keywords", "<meta name=""keywords""")
strFileContents = replace(strFileContents, "<META NAME=KEYWORDS", "<meta name=""keywords""")
'...... etc. Resto de combinaciones de mayus y minus)

strFileContents = replace(strFileContents, "<meta name=description", "<meta name=""description""")
strFileContents = replace(strFileContents, "<meta NAME=description", "<meta name=""description""")
strFileContents = replace(strFileContents, "<META NAME=description", "<meta name=""description""")
strFileContents = replace(strFileContents, "<META NAME=DESCRIPTION", "<meta name=""description""")
'... etc. Resto de combinaciones

strFileContents = replace(strFileContents, "<meta name=language", "<meta name=""language""")
strFileContents = replace(strFileContents, "<meta NAME=language", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META NAME=language", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META NAME=LANGUAGE", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META name=language", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META name=LANGUAGE", "<meta name=""language""")
strFileContents = replace(strFileContents, "<meta NAME=LANGUAGE", "<meta name=""language""")
strFileContents = replace(strFileContents, "<meta name='language'", "<meta name=""language""")
strFileContents = replace(strFileContents, "<meta NAME='language'", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META NAME='language'", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META NAME='LANGUAGE'", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META name='language'", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META name='LANGUAGE'", "<meta name=""language""")
strFileContents = replace(strFileContents, "<meta NAME='LANGUAGE'", "<meta name=""language""")
strFileContents = replace(strFileContents, "<meta name=""language""", "<meta name=""language""")
strFileContents = replace(strFileContents, "<meta NAME=""language""", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META NAME=""language""", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META NAME=""LANGUAGE""", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META name=""language""", "<meta name=""language""")
strFileContents = replace(strFileContents, "<META name=""LANGUAGE""", "<meta name=""language""")
strFileContents = replace(strFileContents, "<meta NAME=""LANGUAGE""", "<meta name=""language""")
strFileContents = replace(strFileContents, "<TITLE>", "<title>")
strFileContents = replace(strFileContents, "</TITLE>", "</title>")
strFileContents = replace(strFileContents, "<A", "<a")
strFileContents = replace(strFileContents, "</A>", "</a>")
if InStr(1, strFileContents, "<meta name=""keywords""",1) > 0 then
key1 = InStr(1, strFileContents, "<meta name=""keywords""", 1)
key1 = key1 + Len("<meta name=""keywords""")
key2 = InStr(key1, strFileContents, """>", 1)
keywords = Trim(Mid(strFileContents, key1, (key2 - key1)))
keywords = Replace (keywords, "Content=""", "")
keywords = Replace (keywords, "content=""", "")
keywords = Replace (keywords, "CONTENT=""", "")
keywords = Replace (keywords, "content=", "")
keywords = Replace (keywords, "CONTENT=", "")
keywords = Replace (keywords, "content='", "")
keywords = Replace (keywords, "CONTENT='", "")
end if

Dim desc1, desc2
if InStr(1, strFileContents, "<meta name=""description""",1) > 0 then
desc1 = InStr(1, strFileContents, "<meta name=""description""", 1)
desc1 = desc1 + Len("<meta name=""description""")
desc2 = InStr(desc1, strFileContents, """>", 1)
descripcion = Trim(Mid(strFileContents, desc1, (desc2 - desc1)))
descripcion = Replace (descripcion , "Content=""", "")
descripcion = Replace (descripcion , "content=""", "")
descripcion = Replace (descripcion , "CONTENT=""", "")
descripcion = Replace (descripcion , "content=", "")
descripcion = Replace (descripcion , "CONTENT=", "")
descripcion = Replace (descripcion , "content='", "")
descripcion = Replace (descripcion , "CONTENT='", "")
end if
if InStr(1, strFileContents, "<meta name=""language""",1) > 0 then
lang1 = InStr(1, strFileContents, "<meta name=""language""", 1)
lang1 = lang1 + Len("<meta name=""language""")
lang2 = InStr(lang1, strFileContents, """>", 1)
language = Trim(Mid(strFileContents, lang1, (lang2 - lang1)))
language = Replace (language , "Content=""", "")
language = Replace (language , "content=""", "")
language = Replace (language , "CONTENT=""", "")
language = Replace (language , "content=", "")
language = Replace (language , "CONTENT=", "")
language = Replace (language , "content='", "")
language = Replace (language , "CONTENT='", "")
end if
if InStr(1, strFileContents, "<title>",1) > 0 then
tit1 = InStr(1, strFileContents, "<title>", 1)
tit1 = tit1 + Len("<title>")
tit2 = InStr(tit1, strFileContents, "</title>", 1)
titulo = Trim(Mid(strFileContents, tit1, (tit2 - tit1)))
titulo = Replace (titulo, "'", " ")
end if
response.Write("<strong>pagina Indexable</strong><br><br>")
response.Write("<strong>"&stu&"</strong><br><br>")
response.write("KEYWORDS:<br> ")
response.write("-----------------------<br>")
response.Write(keywords)
response.Write("<br><br>")
response.write("DESCRIPCIÓN:<br> ")
response.write("-----------------------<br>")
response.Write(descripcion)
response.Write("<br><br>")
response.write("TITLE:<br> ")
response.write("-----------------------<br>")
response.Write(titulo)
response.Write("<br><br>")
response.write("Idioma:<br> ")
response.write("-----------------------<br>")
response.Write(language)
END Sub
%>
</head>
<body bgcolor="#FFFFFF">
<%
obtenerInformacion("http://www.sevillaglobal.es")
%>
</body>
</html>

Este código me funciona perfectamente con lo acentos y las eñes. Aunque la versión que han puesto por aquí es más eficiente. Pero creo que no le han agregado lo de los acentos.

Un beso

P.D.: No está completo porque no me cabía en el mensaje. Te lo mandé también por email
  #14 (permalink)  
Antiguo 09/06/2003, 05:34
Avatar de Aston  
Fecha de Ingreso: mayo-2001
Ubicación: Madrid
Mensajes: 933
Antigüedad: 23 años, 1 mes
Puntos: 0
Hola Helbira:

Agradecerte que me enviases el código. Lo pude montar y, efectivamente, funciona muy bien, pero es cierto que ahora se cuelga bastante.

He logrado que se cuelgue menos liberando el objeto de memoria con...

Set oXML = Nothing

... cuando da el error de 'Sitio no encontrado'. En este caso, el objeto no se liberaba y parece que quedaba colgado en el servidor.

Aún así, todavía se dan casos en los que si no encuentra nada y no da el error, se cuelga. Lo peor del asunto es que ya no vuelve a funcionar hasta que se reinicia el servidor.

Quiero probar a limitar el tiempo de la página para forzar un error de tiempo de espera agotado y en ese momento liberar el objeto de memoria, a ver si se pudiera conseguir algo.

Si consigo alguna mejora, vuelvo a subir el ejemplo modificado.

Bueno, muchas gracias y un beso.
  #15 (permalink)  
Antiguo 09/06/2003, 06:04
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Precisamente ahora mismo estaba haciendo una simbiosis entre el código publicado aquí y el mio para eliminar los continuos replace que yo hacía. Pero no consigo que me funcione imprimiendo los resultados obtenidos en las cajas de texto pero sí me funciona si imprimo los resultados por pantalla con un simple response.write

El caso es que os dejo vuestro código de forma que funciona lo de los acentos pero los resultados los imprimo por pantalla del tirón sin ser tan gonito como lo hicieron por aqui

Código PHP:
<html>
<
head>
<
title>Untitled Document</title>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<%
Function 
EncuentraCad(cCadcDesdecHasta)
  
Dim cActcOrinIninFin

  cAct 
Replace(cCad"  "" ")
  
cOri Replace(cActChr(34), "'")
  
cAct LCase(Replace(cActChr(34), "'"))
  
nIni InStr(1cActcDesde)
  If 
nIni 0 Then Exit Function
  
nIni InStr(1cActcDesde) + Len(cDesde)
  
nFin InStr(nInicActcHasta) - nIni

  EncuentraCad 
SinFull(Mid(cOrinIninFin))
End Function

Function 
SinFull(cCad)
  
Dim iaCon
  aCon 
= Array("/""\", "'")
  For i = 0 To 2
    cCad = Replace(cCad, aCon(i), "")
  Next
  SinFull = Trim(cCad)
End Function

Sub obtenerInformacion(Url)
  Dim HTTP
  On Error Resume Next
  Set HTTP=Server.CreateObject("Microsoft.XMLHTTP")
  HTTP.Open "GET", Url , False
  HTTP.setRequestHeader "Accept-Language", "sp"
  HTTP.setRequestHeader "Pragma", "no-cache"
  HTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  HTTP.Send

  If Err.Number<>0 Then
      Response.Write "Ha sido imposible encontrar el sitio.<br>"
    Response.Write "<a href=javascript:history.back()>Volver</a>"
  Else
    If HTTP.statusText="OK" then
      body8209 = HTTP.responseBody
      sOut = ""
      For i = 0 To UBound(body8209)
        sOut = sOut & chrw(ascw(chr(ascb(midb(body8209,i+1,1)))))
      Next
      strFileContents=sOut
    Else
        Response.write "Error obteniendo Página " & HTTP.statustext & " [<a href='
javascript:history.back()'>Volver</a>]"
    End If
  End If
  set HTTP = nothing
  cTit = EncuentraCad(strFileContents, "<title>", "</title>")
  cDescrip = EncuentraCad(strFileContents, "meta name='
description' content='", ">")
  ckey = EncuentraCad(strFileContents, "
meta name='keywords' content='", ">")
'  
Response.Write("<strong>pagina Indexable</strong><br><br>")
  
Response.write("<b>Título:</b><br> ")
  
Response.Write("<textarea class=fBlan name=titulo cols=99 rows=5>" cTit "</textarea>")
  
  
Response.write("<br><br><b>Keywords:</b><br>")
  
Response.Write("<textarea class=fBlan cols=99 rows=5 name=keywords>" ckey "</textarea>")
  
  
Response.write("<br><br><b>Descripción:</b><br>")
  
Response.Write("<textarea class=fBlan cols=99 rows=5 name=descripcion>" cDescrip "</textarea>")
End Sub
%>
<
style type="text/css">
 
body   font-size11pxfont-familyVerdana }
 .
fPeq  font-size11pxfont-familyVerdana }
 .
fBlan font-size11pxfont-familyVerdanabackground-color#FFFFFF; border: 1px solid #A5ACB2 }
 
.fCafe font-size11pxfont-familyVerdanabackground-color#F5E8D8; border: 1px solid #BD7B42 }
</style>
</
head>
<
body>
<%
If 
Request.Form("Url") <> "" Then 
  obtenerInformacion
(Request.Form("Url"))
End If
%>
<
br>
<
br><table width="450" border="0">
 <
tr><td>
   <
form name="form1" method="post" action="caracteresEspecialesFdW.asp">
   <
input class="fBlan" type="text" name="Url" value="<%=Request.Form("Url")%>" size="45" onfocus="this.className='fCafe'" onblur="this.className='fBlan'">
   <
input class="fPeq" type="submit" name="Submit" value="Indexar">
   </
form>
 </
td></tr>
</
table>
</
body>
</
html
Un beso

P.D.: Donde sa metio el smile ???
  #16 (permalink)  
Antiguo 09/06/2003, 06:10
Avatar de Aston  
Fecha de Ingreso: mayo-2001
Ubicación: Madrid
Mensajes: 933
Antigüedad: 23 años, 1 mes
Puntos: 0
Muchas gracias Helbira por molestarte.

Yo si tengo algo nuevo, rápido lo publico también.

Un beso.
  #17 (permalink)  
Antiguo 13/06/2003, 08:17
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
hola


han logrado solucionar el problema de los acentos?, estube leyendo por alli que lo pudieron hcer pero se colgaba mucho..

ya les funciona correctamente?
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #18 (permalink)  
Antiguo 16/06/2003, 04:22
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
lexus...

En el último código que publiqué en este mismo post a mi me funciona lo de los acentos... y he usado la misma solución que propuse en las FAQs de ASP.

Un beso
  #19 (permalink)  
Antiguo 16/06/2003, 07:54
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
si gracias, ya habia visto que funcionaba lo de los acentos, pero vi por alli que a ASton se le colgaba mucho el sistema se quedaba pegado cuando ocurria un error o no encontraba una pagina cosa que no pasaba antes, pudieron solucionar eso?
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #20 (permalink)  
Antiguo 19/06/2003, 02:20
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Si me lo puedes nmandar ami también te lo agradecería.

[email protected]

Saludoss
  #21 (permalink)  
Antiguo 19/06/2003, 07:25
Avatar de Aston  
Fecha de Ingreso: mayo-2001
Ubicación: Madrid
Mensajes: 933
Antigüedad: 23 años, 1 mes
Puntos: 0
Bueno, a todos los interesados les comento que adapté el trozo e código de Helbira y funciona a las mil maravillas.

Gracias Helbira por ello.

En cuanto al problema de los frecuentes cuelgues pues lo he solucionado en un 85% como les dije, liberando el objeto de memoria en todos los casos, capturando cuando no encuentra el sitio.

Oto asunto que provocaba los cuelgues era cuando no se encontraba un sitio pero en lugar de devolver el mensaje se quedaba buscando eternamente. Para esto he forzado que los sitios deban encontrase antes de medio minuto, con server.ScriptTimeOut. Si pasa dicho tiempo sin encontrarse da un error. Es mejor esto que quedarse colgados y tener que reiniciar el servidor.

Ahora he conseguido usarlo hasta 4 horas sin fallo, aunque a veces que puede que se cuelgue.

Bueno, la última versión está colgada en http://www.laventanita.net/tutorial/spider.zip

Reciban un cordial saludo y reitaerar mis agradecimientos a Helbira por su inestimable colaboración.
  #22 (permalink)  
Antiguo 19/06/2003, 18:35
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
bravo, son unos genios, muchas gracias a los dos.... la verdad es un excelente script...

MUCHISIMAS GRACIAS A AMBOS Y A LOS QUE HAN COLABORADO.

__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com

Última edición por lexus; 21/06/2003 a las 18:26
  #23 (permalink)  
Antiguo 21/06/2003, 18:28
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
hola, estoy usando este script para indexar paginas y luego de recojer la info del sitio se agrega a una base de datos, para un minimotor de busqueda, con este mismo indexador estoy tratando de que dependiendo de las palabras claves y la descripcion, automaticamente se categorice el sitio seleccionado en un combo, por ejemplo si en las keywords o description de la pagina hay palabras como (deportes, futbol, voley, natacion, etc..)
se ubique en la categoria DEPORTES, si por ejemplo tiene las palabras como (teatros, museos, cultura, exposiciones, etc..) me seleccione CULTURA en el combo y asi sucesivamente con las demas categorias... lo dejo en un combo para que de la opcion al usuario de ubicar su sitio en la categoria que mas le convenga si no esta satisfecho con la que el sistema le escogio por el.
lo estoy haciendo con if, pero creo debe haber una opcion mejor y mas optima si tienen ideas son bienvenidas...

denuevo felicitaciones a los creadores de este script..
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com

Última edición por lexus; 21/06/2003 a las 18:32
  #24 (permalink)  
Antiguo 24/06/2003, 22:38
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
tienen alguna idea de como puedo hacer para categorizar la pagina dependiendo de sus palabras claves(keywords) o la descripcion?

por ej:

si en keywords o description hay palabras como: juegos, games, niños, infantes, infantil, boys.
seleccione en un combo: INFANTIL

si en keywords o description hay palabras como: futbol, basket, tennis, volley, partidos.
seleccione en un combo: DEPORTES

si en keywords o description hay palabras como: computadores, pc, windows, mac, linux, progamas, downloads.
seleccione en un combo: COMPUTADORES.

y asi sucesivamente con varias categorias.. digo que se seleccione un combo para que el usuario tenga la posibilidad de cambiar la categoria antes de enviar su sitio, por si no esta de acuerdo con la categoria que el sistema le selecciono automaticamente..
espero me puedan dar ideas para complementar y mejorar el spider....
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #25 (permalink)  
Antiguo 26/06/2003, 14:30
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
hola,
he probado el nuevo codigo que han hecho coregido para los acentos, y se me ha quedado bloqueado con el primer intento

me toco reiniciar el pc..

el error es este:


HTTP 403.9 - Access Forbidden: Too many users are connected
Servicios de Internet Information Server

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

Información técnica (para personal de soporte)


Información general:
Este error puede producirse si el servidor Web está ocupado y no puede procesar su petición porque hay mucho tráfico.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #26 (permalink)  
Antiguo 26/06/2003, 17:09
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 22 años, 4 meses
Puntos: 2
Me de este error

Páginas Active Server error 'ASP 0113'

Tiempo de espera agotado para la secuencia de comandos

/pruebas/spider.asp

Se excedió el tiempo máximo de espera para una secuencia de comandos. Para cambiar este límite especifique un nuevo valor para la propiedad Server.ScriptTimeOut o cambie el valor en las herramientas de administración de IIS.
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #27 (permalink)  
Antiguo 22/08/2003, 19:00
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
?
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #28 (permalink)  
Antiguo 22/08/2003, 19:56
Avatar de Aston  
Fecha de Ingreso: mayo-2001
Ubicación: Madrid
Mensajes: 933
Antigüedad: 23 años, 1 mes
Puntos: 0
Je, je, despertaron el mensaje...

Hola Dobled, el error que comentas lo dejé explicado arriba cuando decía esto:

Oto asunto que provocaba los cuelgues era cuando no se encontraba un sitio pero en lugar de devolver el mensaje se quedaba buscando eternamente. Para esto he forzado que los sitios deban encontrase antes de medio minuto, con server.ScriptTimeOut. Si pasa dicho tiempo sin encontrarse da un error. Es mejor esto que quedarse colgados y tener que reiniciar el servidor.

Con respecto al problema que comenta Lexus, de "demasiados usuarios conectados", no me lo explico, en estos meses que llevo usando el script no me ha dado jamás un mensaje de error semejante.

Como comenté en un mensaje anterior, los cuelgues se pudieron subsanar en un 85-90% pero siempre queda la posibilidad. Por eso, yo no le pido demasiado a este script y no lo uso para tareas automatizadas.

Durantes estos tres meses lo he usado manualmente para recopilar los meta-tags de los sitios que voy a ingresar en un directorio y buscador, pero en vez de ingresarlo directamente en la base de datos, lo que hago es rellenar los campos del formulario y así me da la opción de poder limpiar o modificar a mi gusto. Después sólo me queda pulsar "Aceptar" y buscar el siguiente sitio.

En cuanto a los errores, yo lo uso por horas sin problema. Otra cosa es que no creo que con esta tecnología hagamos un Google o Altavista.

Recibid un grato saludo.
  #29 (permalink)  
Antiguo 23/08/2003, 10:23
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
ok, muchas gracias, creo qeu ya queda totalmente claro todas mis dudas, de todos modos me parece de mucha utilidadd el script,

de nuevo muchas gracias a ltodos los que participaron..
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #30 (permalink)  
Antiguo 27/06/2004, 12:33
 
Fecha de Ingreso: febrero-2003
Mensajes: 141
Antigüedad: 21 años, 3 meses
Puntos: 0
Para que son?

Podrian contarme exactamente que hacen estas tres lineas de codigo?

HTTP.setRequestHeader "Accept-Language", "sp"
HTTP.setRequestHeader "Pragma", "no-cache"
HTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

Gracias
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:58.