¿Quieres utilizar ASP para crear tu programa de recolección de ladrones favorito? Después de leer el siguiente artículo, puedes crearlo tú mismo. principio
El programa de recopilación en realidad llama a páginas web de otros sitios web a través del componente XMLHTTP en XML. Por ejemplo, muchos de los programas de recopilación de noticias llaman a las páginas web de noticias de Sina, y parte del HTML que contienen se reemplaza y los anuncios también se filtran. Las ventajas de utilizar un programa de recopilación son: no es necesario mantener el sitio web, porque los datos del programa de recopilación provienen de otros sitios web y se actualizarán a medida que se actualice el sitio web, lo que generalmente puede ahorrar recursos del servidor; El programa de recopilación solo tiene unos pocos archivos y todo el contenido web proviene de otros sitios web. Las desventajas son: inestabilidad: si el sitio web de destino falla, el programa también fallará, y si el sitio web de destino se actualiza y mantiene, la velocidad del programa de recopilación también deberá modificarse en consecuencia, porque es una llamada remota; La velocidad es tan rápida como leer datos en el servidor local. Definitivamente es más lenta que eso.
1. Casos
La siguiente es una breve explicación de la aplicación de XMLHTTP en ASP.
Copie el código de código de la siguiente manera:
<%
'Funciones de uso común
'1. Ingrese la dirección URL de la página web de destino y el valor de retorno getHTTPPage es el código html de la página web de destino.
función getHTTPage(url)
dimHttp
establecer Http=servidor.createobject(MSXML2.XMLHTTP)
Http.open OBTENER,url,falso
http.enviar()
si Http.readystate<>4 entonces
función de salida
terminar si
getHTTPPage=bytesToBstr(Http.responseBody,GB2312)
establecer http=nada
si err.number<>0 entonces err.Clear
función final
'2. Convierta Ranma. Utilice xmlhttp directamente para llamar a páginas web con caracteres chinos. Lo que obtendrá será Ranma. Puede convertirlo a través del componente adodb.stream.
Función BytesToBstr(cuerpo)
corriente de objetos tenue
establecer objstream = Server.CreateObject(adodb.stream)
objstream.Tipo = 1
objstream.Modo =3
objstream.Abrir
objstream.Escribir cuerpo
objstream.Posición = 0
objstream.Tipo = 2
objstream.Charset = GB2312 'Convierte la codificación UTF-8 predeterminada original a la codificación GB2312. De lo contrario, el uso directo del componente XMLHTTP para llamar a una página web con caracteres chinos dará como resultado un código confuso.
BytesToBstr = objstream.ReadText
objstream.Cerrar
establecer objstream = nada
Función final
'Intenta llamar al contenido html de http://www.vevb.com
URL atenuada, HTML
URL=http://www.vevb.com;
HTML = obtener página HTTP (URL)
Respuesta.escribir HTML
%>
2. Varias funciones de uso común
(1) Función InStr
describir
Devuelve la posición donde un determinado carácter (cadena2) aparece por primera vez en otra cadena (cadena1).
gramática
InStr(cadena1, cadena2)
Por ejemplo:
Cadena de búsqueda tenue, carácter de búsqueda
SearchString =http://www.vevb.com ' La cadena a buscar.
SearchChar = jb51 'Buscar jb51.
MyBK = Instr(SearchString, SearchChar) ' Devuelve 8
'Devuelve 0 si no se encuentra, por ejemplo:
Carácter de búsqueda = BK
MyBK = Instr(SearchString, SearchChar) ' Devuelve 0
(2) Función media
describir
Devuelve el número especificado de caracteres de una cadena.
gramática
Medio (cadena, inicio, fin)
Por ejemplo:
Atenuar MyBK
MyBK = Mid (nuestro diseño de BK (www.google), 7, 12) 'Intercepta la cadena 12 caracteres después del séptimo carácter de nuestro diseño de BK (www.google)
'En este momento el valor de MyBK pasa a ser www.google
(3) Reemplazar función
Cadena de búsqueda tenue, carácter de búsqueda
SearchString = Nuestro diseño BK es una cadena de sitios web de recursos de creación de sitios web en la que se realizarán búsquedas.
Cadena de búsqueda = Reemplazar (Cadena de búsqueda, diseño BK, Www.google)
'En este momento, el valor de SearchString se convierte en nuestro Www.google es un sitio web de recursos de construcción de sitios web.
3. Intercepta el código HTML del área especificada.
Por ejemplo, sólo quiero obtener la parte de texto entre <td> y </td> en el siguiente código HTML:
<html>
<title>(www.google)Motor de búsqueda de Google</title>
<cuerpo>
<tabla>
<tr><td></td></tr>
<tr><td id=Content>BK (www.google) El motor de búsqueda de Google es un sitio con muchos recursos...</td></tr>
</tabla>
</cuerpo>
</html>
<%
…
Dim StrBK, empezar, volver, RsBK
StrBK=getHTTPPage (la dirección de la página web)
start=Instr(StrBK,<td id=Content>) 'La función aquí es obtener la posición del comienzo de la cadena. Alguien va a preguntar aquí: el código original es <td id=Content>, ¿por qué llamas <td id=Content> aquí? Respuesta: en asp (para ser precisos, está representado por dos comillas dobles en VBscript. ¿Un doble? comillas, porque las comillas dobles son un carácter sensible para el programa).
over=Instr(StrBK,…</td></tr>)'La función aquí es obtener la posición del final de la cadena.
'Alguien va a preguntar nuevamente aquí :( : ¿Por qué hay tres puntos adicionales delante del código HTML que el programa llama...? Respuesta: Consejo: También hay un </td></tr> en lo anterior línea, si usa </td></ tr> para localizar, el programa considerará erróneamente </td></tr> en la línea anterior como el final de la cadena que se va a obtener.
RsBK=mid(StrBK,start,over-start) 'La función aquí es extraer la cadena entre el carácter inicial y el carácter final en StrBK. También hablé de la función intermedia en la sección anterior; el inicio excesivo es calcular la distancia entre la posición inicial y la posición final, que es el número de caracteres.
respuesta.write(RsBK) 'Finalmente genera el contenido obtenido por el programa
%>
No estés demasiado contento. Cuando lo ejecutes, encontrarás que hay un error en el código html de la página. Porque el código html que obtienes es:
<td id=Content>BK (www.google) El motor de búsqueda de Google es un sitio con muchos recursos...
¿Viste eso? ¡Hay código HTML incompleto! ¿Qué hacer? La declaración start=Instr(StrBK,<td id=Content>) obtiene el número de posición de <td id=Content> en StrBK. Ahora podemos agregar 17 después de la declaración del programa, luego el programa apuntará a la posición El carácter después. <td id=Contenido>.
Bien, el programa cambiará a esto:
<%
…
Dim StrBK, empezar, volver, RsBK
StrBK=getHTTPPage (la dirección de la página web)
inicio=Instr(StrBK,<td id=Contenido>) + 17
over=Instr(StrBK,…</td></tr>) 'Aquí también puedes restar siete (-7) para quitar 3 puntos
RsBK=mid(StrBK,inicio,sobreinicio)
respuesta.escribir(RsBK)
%>
Esto está bien, podemos robar lo que queramos y mostrarlo en nuestra propia página, jaja ~
4. Eliminar o modificar los caracteres obtenidos.
Reemplace BK(www.google) en RsBK con BK:
RsBK=reemplazar(RsBK,BK(www.google),BK)
O eliminar (www.google) directamente:
RsBK=reemplazar(RsBK,(www.google),)
Bien, ahora RsBK se convierte en: BK El motor de búsqueda de Google es un sitio con muchos recursos...
Pero, de hecho, la función de reemplazo puede no ser adecuada para algunas situaciones. Por ejemplo, queremos eliminar todas las conexiones en una determinada cadena. Las conexiones pueden incluir muchos tipos y reemplazar solo puede reemplazar uno específico. ¿Otra función de reemplazo correspondiente para reemplazarla?
Pero puedes usar expresiones regulares para hacer este trabajo. No entraré en detalles aquí.
(1) ¿Cómo procesar el cambio de página del sitio web de la otra parte al nuestro?
La respuesta es: utilice la función de reemplazo y pase los parámetros de la página.
Por ejemplo, la página de la otra parte contiene dicho código para pasar de página: <a href=2.htm>Página siguiente</a>. Primero podemos usar el contenido mencionado anteriormente para obtener esta cadena y luego usar la función de reemplazo: RsBK=. reemplazar( RsBK,<a href=,<a href=page.asp?Url=)
Luego, obtenga el valor del parámetro Url en el programa page.asp y, finalmente, utilice la tecnología de recopilación para obtener el contenido que desea en la página siguiente.
(2) Cómo almacenar el contenido obtenido en la base de datos
Debido al espacio limitado, lo mencionaré brevemente aquí.
En realidad es muy simple:
Procese el contenido robado para evitar errores de inyección SQL al escribir en la base de datos, por ejemplo: reemplazar(String,','')
Luego ejecute un comando sql para insertarlo en la base de datos y estará bien ~
Las anteriores son solo algunas aplicaciones básicas del componente XMLHTTP. De hecho, también puede implementar muchas funciones, como guardar imágenes remotas en el servidor local y utilizar el componente adodb.stream para guardar los datos adquiridos en la base de datos. La colección tiene una amplia gama de funciones y usos.