He desarrollado varios programas de recopilación y he estudiado muchos códigos de programas de recopilación, por lo que entiendo un poco los principios de los programas de recopilación. Primero hablemos del principio de recopilación:
Los principales pasos del procedimiento de cobro son los siguientes:
1. Obtener el contenido de las páginas recopiladas.
2. Extraiga todos los datos utilizados del código de adquisición.
1. Obtener el contenido de las páginas recopiladas.
Los métodos ASP comúnmente utilizados que conozco actualmente para obtener el contenido de las páginas recopiladas son:
1. Utilice el componente serverXMLHTTP para obtener datos.
Copie el código de código de la siguiente manera:
Función GetBody (weburl)
'Crear objeto
Dim ObjXMLHTTP
Establecer ObjXMLHTTP=Server.CreateObject(MSXML2.serverXMLHTTP)
'Solicitar archivo, en forma asincrónica
ObjXMLHTTP.Abrir GET,weburl,Falso
ObjXMLHTTP.enviar
Mientras que ObjXMLHTTP.readyState <> 4
ObjXMLHTTP.waitForResponse 1000
Encaminarse a
'Obtener el resultado
GetBody=ObjXMLHTTP.responseBody
'Liberar objeto
Establecer ObjXMLHTTP=Nada
Función final
Método de llamada:
GetBody (dirección URLf del archivo)
2. O componente XMLHTTP para obtener datos.
Copie el código de código de la siguiente manera:
Función GetBody (weburl)
'Crear objeto
Establecer recuperación = CreateObject(Microsoft.XMLHTTP)
Con recuperación
.Abrir Obtener, weburl, Falso, ,
.Enviar
ObtenerCuerpo = .ResponseBody
Terminar con
'Liberar objeto
Establecer recuperación = nada
Función final
Método de llamada:
GetBody (dirección URLf del archivo)
El contenido de los datos obtenidos de esta manera aún debe codificarse y convertirse antes de poder utilizarse.
Copie el código de código de la siguiente manera:
Función BytesToBstr(cuerpo,Cset)
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 = Cset
BytesToBstr = objstream.ReadText
objstream.Cerrar
establecer objstream = nada
Función final
Método de llamada: la codificación BytesToBstr (datos a convertir, codificación) se usa comúnmente como GB2312 y UTF-8
2. Extraiga todos los datos utilizados del código de adquisición.
Los métodos que tengo actualmente son:
1. Utilice la función MID incorporada de ASP para interceptar los datos requeridos
Copie el código de código de la siguiente manera:
Cuerpo de función (wstr, inicio, cambio)
inicio=Nuevacadena(wstr,inicio)
'Establece la etiqueta de inicio única de los datos que deben procesarse
over=Nuevacadena(wstr,over)
'Correspondiente al inicio es la única etiqueta final de los datos que deben procesarse.
cuerpo = medio (wstr, inicio, inicio excesivo)
'Establece el rango de páginas mostradas
Función final
Método de llamada: cuerpo (contenido de la página recopilada, etiqueta de inicio, etiqueta de finalización)
2. Utilice expresiones regulares para obtener los datos requeridos.
Copie el código de código de la siguiente manera:
Cuerpo de función (wstr, inicio, cambio)
Set xiaoqi = Nuevo objeto de configuración set Regexp
xiaoqi.IgnoreCase = True'Ignorar caso
xiaoqi.Global = True' configurado para búsqueda de texto completo
xiaoqi.Pattern = &start&.+?&over&'expresión regular
Set Matches =xiaoqi.Execute(wstr)'Comenzar a ejecutar la configuración
establecer xiaoqi = nada
cuerpo =
Para cada partido en partidos
body=body&Match.Value 'Coincidencia de bucle
Próximo
Función final
Método de llamada: cuerpo (contenido de la página recopilada, etiqueta de inicio, etiqueta de finalización)
Ideas detalladas para procedimientos de cobranza:
1. Obtenga la dirección de cada página de la página de lista paginada del sitio web.
En la actualidad, la mayoría de los sitios web dinámicos tienen reglas para direcciones de paginación, como por ejemplo:
pagina dinamica
Primera página: index.asp?page=1
Segunda página: index.asp?page=2
La tercera página: index.asp?page=3
.....
pagina estatica
Primera página: página_1.htm
Segunda página: página_2.htm
La tercera página: page_3.htm
.....
Para obtener la dirección de cada página de la página de lista de paginación del sitio web, solo necesita usar variables para reemplazar los caracteres cambiantes de la dirección de cada página, como: page_<%=&page&%>.htm
2. Obtenga el contenido de la página de lista paginada del sitio web recopilado.
3. Extraiga la dirección de conexión URL de la página de contenido recopilado del código de la lista de paginación.
La mayoría de los enlaces a páginas de contenido en páginas paginadas también tienen reglas fijas, como por ejemplo:
<a href=url1>Conexión 1</a> <br>
<a href=url2>Conexión 2</a> <br>
<a href=url3>Conexión 3</a> <br>
Utilice el siguiente código para obtener una colección de conexiones URL
Copie el código de código de la siguiente manera:
Establecer xiaoqi = Nueva expresión regular
xiaoqi.IgnoreCase = Verdadero
xiaoqi.Global = Verdadero
xiaoqi.Patrón = .+?
Establecer coincidencias = xiaoqi.Execute (contenido de la lista de páginas)
establecer xiaoqi = nada
URL =
Para cada partido en partidos
url=url&Coincidencia.Valor
Próximo
4. Obtener el contenido de la página de contenido recopilado e interceptar los datos que se obtendrán de la página de contenido recopilado de acuerdo con la marca de extracción.
Debido a que es una página generada dinámicamente, la mayoría de las páginas de contenido tienen las mismas etiquetas HTML. Podemos extraer las partes requeridas del contenido en función de estas etiquetas normales.
como:
Cada página tiene un título de página web <title>Título de la página web</title>. Puede usar la función de intercepción MID que escribí anteriormente para obtener el valor entre <title></title>, o puede usar expresiones regulares para obtenerlo.
Ejemplo: cuerpo(<título>Título de la página web</título>,<título>,</título>)