Es la idea de muchas personas tener nuestro propio motor de búsqueda, pero ¿cómo podemos tener nuestro propio motor de búsqueda? Ahora el editor le enseñará cómo usar los métodos de recopilación de datos populares actuales para implementar su propio motor de búsqueda. Ahora echemos un vistazo a los métodos para construir su propio motor de búsqueda.
1. Comprender la búsqueda de Baidu
Baidu Search, el motor de búsqueda chino más grande del mundo, figuraba en el NASDAQ en los Estados Unidos el 5 de agosto de 2005. Actualmente es el motor de búsqueda con la tasa de uso de los usuarios más alta en China, proporcionando diversas búsquedas, como páginas web, noticias, imágenes, música, mapas, etc.
1. Parámetros de consulta para la búsqueda web de Baidu
Parámetros requeridos
☆ WD-Keyword para consulta (palabra clave)
☆ PN-Number of Pages que muestran el resultado (PageNumber)
☆ CL-Tipo de búsqueda (clase), CL = 3 es Web Search
Parámetros opcionales
☆ RN-El número de resultados de búsqueda (RegyNumber), el rango de valor es entre 10 y 100, la configuración predeterminada es RN = 10
☆ IE-QUERY La codificación del texto de entrada (inputencoding), la configuración predeterminada es, es decir, GB2312, que es chino simplificado
☆ TN-El sitio fuente para enviar la solicitud de búsqueda
Varios TNS útiles
TN = Baidulocal significa que las búsquedas en el sitio de Baidu, los resultados devueltos son muy limpios y no hay interferencia publicitaria. Por ejemplo, busque la felicidad en Baidu para ver si los resultados son refrescantes.
TN = Baiducnnic quiere poner a Baidu en el marco? Solo prueba este parámetro, es personalizado por Baidu para CNNIC
☆ SI-SIVEH en nombres de dominio limitado. Por ejemplo, si desea buscar en el sitio web de Sina, puede usar el parámetro si = sina.com.cn. Para que este parámetro sea efectivo, debe usarlo junto con el parámetro CT.
☆ CT: el valor de este parámetro es generalmente una cadena de números, que se estima en el código de verificación para la solicitud de búsqueda.
Use parámetros SI y CT en combinación, por ejemplo, busca ideales en sina.com.cn, disponible: http://www.baidu.com/baidu?ie=utf-8&am...n&cl=3&word=ideal
☆ BS-La palabra clave de la última búsqueda (BefefefefefeSearch), que se estima relacionada con búsquedas relacionadas.
2. Estructura de la página de resultados de búsqueda de Baidu
De acuerdo con la estructura del código fuente, el de arriba hacia abajo es:
Caja de búsqueda
Ranking fijo de áreas calientes a la derecha
Resultados de la búsqueda
Área de paginación
Búsquedas relacionadas
Cuadro de búsqueda inferior
Área de derechos de autor
Los resultados de búsqueda y el área de paginación son los datos válidos que necesitamos. Según los resultados del código, puede encontrar su identificador de cadena único. Simplemente use este identificador para interceptar el contenido. Para más detalles, mire el siguiente código.
2. Función central-componente XMLHTTP usando ASP
El programa de recopilación de datos, comúnmente conocido como Thief Program, es la parte central de este componente XMLHTTP. Es un poco anticuado usar XMLHTTP para recopilar datos, y también hay mucha información en línea. En general, el código de recopilación es
setThttp = server.CreateObject (msxml2.xmlhttp)
Http.openget, url, falso'open xmlhttp
Http.send () 'Enviar una solicitud
ifhttp.readyState <> 4then
extinción
endif
gethttppage = bytestobstr (http.ResponseBody, GB2312) 'Devuelve el resultado (generalmente una secuencia de bytes) y convierte la corriente de byte en una cadena
setThttp = Nothing'ReLease xmlhttp
Consulte el código completo a continuación para una aplicación detallada
3. Código completo (nombre del archivo: Searchi_bd.asp)
<%
opcionExpliCit
Dimwd, PN
WD = solicitud (WD)
PN = request.QueryString (PN)
'Iniciar manejo de errores
OnerrorResumEnext
Iferr.number <> 0then
Respuesta.
'Mostrar mensaje de error al usuario
Hay un error en Response.write <palign = 'Center'> <fontSize = 3>, abra Baidu Search nuevamente. </font> </p>
endif
%>
<html>
<Evista>
<title> Baidu Search-<%= wd%> </title>
</ablo>
<Styletype = text/css>
<!-
Cuerpo, TD {Font-Family: Arial}
Td {font-size: 9pt; line-height: 18px}
.Cred {Color:#FF0000}
//->
</style>
<BodyleftMargin = 0TopMargin = 3MarginWidth = 0MarginHeight = 0>
<TableLeLign = CenterWidth = 98%CellPacing = 0CellPadding = 0Border = 0BGColor =#ffffff>
<tr>
<formname = f1method = postaction = searchi_bd.asp>
<tdWidth = 150Height = 50>
Tu logotipo
</td>
<tdalign = izquierda>
<inputName = wdsize = 40MaxLength = 100Title = Ingrese las palabras clave, y luego vamos a la investigación ... valor = <%= wd%>>
<inputType = SubtItValue = Baidu Search>
</td> </form> </tr>
</table>
<%
Dimstrurl, strtmp_bd, strinfo, strpage, strpagesum_bd, strqtime_bd
Dimbnoresult_bd, regex, patrn
'Cadena de consultas de Baidu
strurl = http: //www.baidu.com/s? ie = gb2312 & wd = & wd & am ... & pn && cl = 3
'Comienza la colección
strtmp_bd = gethttppage (strurl)
Ifinstr (strtmp_bd, no encontrado y su consulta) <> 0then
bnoresult_bd = 1
Endif
'Intercepe el contenido de la sección de resultados de búsqueda
strinfo = strcut (strtmp_bd, <divid = scriptDiv> </div>, <brcLear = all>, 2)
Patrn = </td> </tr> </table> <br>
SetRegex = NewGEXP 'crea una expresión regular.
regex.pattern = Patrn'set Mode.
regex.ignorecase = true
regex.global = falso
strinfo = regex.replace (Strinfo,)
'Seave el contenido del área de paginación
strpage = strcut (strtmp_bd, <brcLear = all>, <br>, 2)
strpage = reemplazar (strpage, href = s?, href = searchi_bd.asp?)
'El número de resultados y tiempo
strpagesum_bd = strcut (strtmp_bd, busca la página web relevante, artículo, 2)
ifnotisnumérico (strpagesum_bd) entonces
strpagesum_bd = strcut (strtmp_bd, busca la página web relevante, artículo, 2)
endif
strqtime_bd = strcut (strtmp_bd, tiempo, segundos, 2)
Setstrtmp_bd = nada
%>
<!-T1-start->
<TableCellPacing = 0CellPadding = 0Border = 0Width = 98%Align = Center>
<trvalign = centroalign = middleHeight = 18>
<tdwidth = 1bgcolor =#999999>
<tdnowrapStyle = font-weight: bold; color: #ffffff; background-color:#0033ccwidth = 64> Internet </td>
<tdalign = raybgcolor =#eeeeeeee> <BodeNeBr> Encuentre páginas web relevantes que coincidan con <b> <%= wd%> </b> <b> <%= strpagesum_bd%> </b>, y tomen <b> <%= strqtime_bd%> </b> segundos </nodrem> </td>>
</tr>
<tr> <tdbgcolor =#999999colspan = 3Height = 2> </td> </tr> </table>
</td>
</tr>
</table>
<%
ifwd = entonces
Response.Write <palign = 'Center'> <fontSize = -1> Hola, ingrese las palabras clave en el cuadro de búsqueda. </font> </p>
elseifbnoresult_bd = 1
Response.write <palign = 'Center'> <fontSize = -1> Lo siento, no se encontró información que cumpla con sus condiciones de consulta. Vuelva a seleccionar la palabra clave apropiada para consultar. </font> </p>
demás
%>
<tableWidth = 98%align = centerCellSpace = 0CellPacing = 0CellPadding = 0Border = 0>
<tr>
<tdStyle = line-height: 160%bgcolor =#ffffffwidth = 75%valign = top> <br>
<%= strinfo%>
</td>
<tdwidth = 25%valign = top> <br> ¡Este es el espacio para jugar!
</td>
</tr>
</table>
<tableWidth = 98%align = centerCellSpace = 0CellPacing = 0CellPadding = 4Border = 0>
<tr>
<tdalign = Center>
<br> <fontSize = 3> <%= strpage%> </font>
</td>
</tr>
</table>
<%Endif
setstrinfo = nada
%>
<hrsize = 1Width = 760Color =#0000ff>
<Divalign = Center> <fontSize = -1>
Vaya a <spanclass = cred> (foro de intercambio de conocimientos) </span> para ver </font>
</div>
</body>
</Html>
<%
'Colección de funciones
Functiongethttppage (URL)
OnerrorResumEnext
dimhttp
setThttp = server.CreateObject (msxml2.xmlhttp)
Http.openget, url, falso
Http.send ()
ifhttp.readyState <> 4then
extinción
endif
gethttppage = bytestobstr (http.ResponseBody, GB2312)
setthttp = nada
Iferr.number <> 0then
Response.Write <Divalign = 'Center'> <b> El servidor erróneo al obtener contenido del archivo </b> </div>
Err.Clear
Endif
Función final
'Byte Stream se convierte en cadena
FunctionByTestObstr (Body, CSET)
dimobjstream
setobjstream = server.createObject (ADODB.Stream)
objstream.type = 1
objstream.mode = 3
objstream.
objstream.WriteBody
objstream.position = 0
objstream.type = 2
objstream.charset = cset
Bytestobstr = objstream.readText
objstream.close
setobjstream = nada
Función final
'Intercepting String, 1. Incluye cuerdas antes y después, 2. Sin incluir cuerdas antes y después
Functionstrcut (strContent, startstr, endstr, cuttype)
Dims1, s2
OnerrorResumEnext
selectCasecutType
Caso1
S1 = instr (strContent, startstr)
S2 = Instr (S1, StrContent, Endstr)+Len (Endstr)
Caso2
S1 = instr (strContent, startstr)+len (startstr)
S2 = Instr (S1, StrContent, Endstr)
EndSelectar
Iferrthen
strcute = <palign = 'Center'> <fontSize = -1> Se produjo un error interceptando la cadena. </font> </p>
Err.Clear
Extinción
Demás
strcut = Mid (strContent, S1, S2-S1)
Endif
Función final
%>
Copie el código anterior en el bloc de notas y guárdelo como searchi_bd.asp, y puede usarlo. Si desea cambiar el nombre del archivo, también cambie la parte de identificación azul del siguiente código al nombre de su archivo
strpage = reemplazar (strpage, href = s?, href = searchi_bd.asp?)
Algunas explicaciones:
1. Baidu Search básicamente no tiene medidas anticolectivas. El punto principal es que Baidu cambiará el código fuente de la página del resultado de retorno de vez en cuando, por lo que a menudo debe observar la página del resultado de búsqueda de Baidu. Si el código cambia, puede cambiar el logotipo de cadena. En términos de anticolección, Baidu es mucho más generoso que Google. En la actualidad, no hay fenómeno de bloquear temporalmente la IP del sitio de origen debido a la consulta frecuente de Baidu. Este fenómeno a menudo ocurre en las consultas de Google. Cómo resolverlo se discute en el próximo artículo.
2. Recopilar es más consumidor de recursos, y buscar ladrones es lo mismo que buscar programas, así que trate de liberar variables u objetos lo antes posible en el programa. Si no tiene muchos recursos espaciales, se recomienda no hacer estas cosas.
3. Algunas personas pueden no querer retener las conexiones funcionales de Baidu en el ladrón de búsqueda que hacen, como las instantáneas de Baidu y las funciones de búsqueda en el sitio. Por esta razón, proporciono una versión simplificada sin ninguna conexión a Baidu en el paquete de descarga. Puedes usarlo según sea necesario. El código no aparecerá en este artículo, que en realidad es similar a la versión completa.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos, y espero que todos apoyen el nuevo canal de tecnología incorrecto.