Es ist eine Menge der Idee, unsere eigene Suchmaschine zu haben, aber wie können wir unsere eigene Suchmaschine haben? Jetzt unterrichtet der Editor, wie Sie die aktuellen Methoden für beliebte Datenerfassungen verwenden, um Ihre eigene Suchmaschine zu implementieren. Schauen wir uns nun die Methoden an, um Ihre eigene Suchmaschine zu erstellen.
1. Verstehen Sie Baidu -Suche
Die Baidu -Suche, die weltweit größte chinesische Suchmaschine, wurde am 5. August 2005 auf der NASDAQ in den USA aufgeführt. Derzeit ist es die Suchmaschine mit der höchsten Nutzungsnutzungsrate in China und bietet verschiedene Suchanfragen wie Webseiten, Nachrichten, Bilder, Musik, Karten usw.
1. Abfrageparameter für die Baidu -Websuche
Erforderliche Parameter
☆ WD-Keeword für Abfrage (Schlüsselwort)
☆ pn-nummer von Seiten, die das Ergebnis zeigen (Pagenumber)
☆ Cl-Suchentyp (Klasse), CL = 3 ist die Websuche
Optionale Parameter
☆ RN-Die Anzahl der Suchergebnisse (RecordNumber), der Wertebereich zwischen 10 und 100, die Standardeinstellung beträgt RN = 10
☆ dh-qualifiziert die Codierung des Eingabentext
☆ TN-Die Quellstelle zum Senden von Suchanforderungen
Mehrere nützliche TNs
TN = Baidulocal bedeutet, dass die Suche auf der Baidu -Site, die zurückgegebenen Ergebnisse sehr sauber sind und keine Anzeigenstörungen vorhanden sind. Suchen Sie beispielsweise nach Glück auf Baidu, um festzustellen, ob die Ergebnisse erfrischend sind.
TN = Baiducnnic will Baidu in den Rahmen setzen? Probieren Sie einfach diesen Parameter aus, er wird von Baidu für CNNIC angepasst
☆ Such in begrenzten Domain-Namen. Wenn Sie beispielsweise auf der Website von Sina suchen möchten, können Sie den Parameter SI = SINA.com.cn verwenden. Um diesen Parameter effektiv zu machen, müssen Sie ihn in Verbindung mit dem CT -Parameter verwenden.
☆ CT-Der Wert dieses Parameters ist im Allgemeinen eine Zeichenfolge von Zahlen, die als Überprüfungscode für die Suchanforderung geschätzt wird.
Verwenden Sie die SI- und CT-Parameter in Kombination, beispielsweise nach Idealen in Sina.com.cn, verfügbar: http://www.baidu.com/baidu?ie=utf-8&am...n&cl=3&word=ideal
☆ BS-Das Schlüsselwort der letzten Suche (Beforesearch), die schätzungsweise mit verwandten Suchvorgängen zusammenhängt.
2. Baidu Suchergebnisse Seitenstruktur Struktur
Gemäß der Quellcodestruktur ist die Top-Down:
Suchbox
Feste Rangfolge heißer Bereiche rechts
Suchergebnisse
Paginierungsbereich
Verwandte Suchanfragen
Untere Suchbox
Urheberrechtsbereich
Die Suchergebnisse und der Paginationsbereich sind die gültigen Daten, die wir benötigen. Nach den Codeergebnissen finden Sie die eindeutige Zeichenfolgekennung. Verwenden Sie diese Kennung einfach, um den Inhalt abzufangen. Weitere Informationen finden Sie im folgenden Code.
2. Kernfunktion-xmlhttp-Komponente mit ASP
Das Datenerfassungsprogramm, das allgemein als Thief -Programm bekannt ist, ist der zentrale Bestandteil dieser XMLHTTP -Komponente. Es ist etwas altmodisch, XMLHTTP zum Sammeln von Daten zu verwenden, und es gibt auch viele Online-Informationen. Im Allgemeinen ist der Sammelcode
setThttp = server.createObject (msxml2.xmlhttp)
Http.openget, URL, false'open xmlhttp
Http.send () 'eine Anfrage senden
IFHTTP.REYYSTATE <> 4Then
Ausgangsfunktion
Endif
Gethttppage = byTestObstr (http.ResponseBody, GB2312) 'RECHTE DAS ERGEBNIS (normalerweise ein Byte -Stream) und konvertieren den Byte -Stream in eine Zeichenfolge
settThttp = Nothing'Release xmlhttp
Eine detaillierte Anwendung finden Sie im folgenden vollständigen Code
3.. CODE CODE (Dateiname: Searchi_Bd.asp)
<%
OptionExPlicit
Dimwd, pn
WD = Anfrage (WD)
PN = Request.queryString (PN)
'Start Fehlerbehandlung
OnErrorresumeNext
Ifr.number <> 0Then
Antwort.Clear
'Die Fehlermeldung an den Benutzer anzeigen
Es gibt einen Fehler in der Antwort.
Endif
%>
<html>
<kopf>
<title> Baidu-Suche-<%= wd%> </title>
</Head>
<StyLetype = text/css>
<!-
Körper, td {Schriftfamilie: Arial}
TD {Schriftgröße: 9PT; Zeilenhöhe: 18px}
.cred {color:#ff0000}
//->
</Style>
<ByLeftmargin = 0TopMargin = 3MarginWidth = 0MarginHeight = 0>
<TableAlign = CENTERWIDTH = 98%Cellpacing = 0Cellpadding = 0BORDER = 0BGCOLOR =#FFFFFF>
<tr>
<formName = f1Method = postaction = searchi_bd.asp>
<tdwidth = 150Height = 50>
Dein Logo
</td>
<tdalign = links>
<inputName = wdsize = 40maxLength = 100Title = Geben Sie Schlüsselwörter ein und lassen
<InputType = subledValue = Baidu -Suche>
</td> </form> </tr>
</table>
<%
DIMSTRURL, STRTMP_BD, STRINFO, STRPAGE, STRPAGESUM_BD, STRQTIME_BD
Dimbnoresult_bd, regex, patrn
'Baidu Query String
StRURL = http: //www.baidu.com/s? IE = GB2312 & wd = & wd & am ... & pn && cl = 3
'Starten Sie die Sammlung
STRTMP_BD = Gethttppage (STRURL)
IFInStr (STRTMP_BD, nicht gefunden und Ihre Abfrage) <> 0Then
Bnoresult_bd = 1
Endif
Fangen Sie den Inhalt des Abschnitts der Suchergebnisse ab
STRINFO = STRCUT (strtmp_bd, <divid = scriptDiv> </div>, <brclear = alle>, 2)
patrn = </td> </tr> </table> <br>
SetRegex = newRegexp 'erstellt einen regulären Ausdruck.
regex.pattern = patrn'Set -Modus.
regex.ignorecase = true
regex.global = false
Strinfo = regex.replace (Strinfo,)
'Seave Der Inhalt des Paging -Gebiets
strpage = strcut (strtmp_bd, <brclear = alle>, <br>, 2)
Strpage = Ersatz (strpage, href = s?, href = searchi_bd.asp?)
'Die Anzahl der Ergebnisse und Zeit
Strpagesum_bd = strcut (strtmp_bd, finden Sie die entsprechende Webseite, Artikel, 2)
ifnotisnumeric (strpagesum_bd) dann
Strpagesum_bd = strcut (strtmp_bd, finden Sie die entsprechende Webseite, Artikel, 2)
Endif
STRQTIME_BD = STRCUT (STRTMP_BD, Zeit, Sekunden, 2)
SetStrtmp_bd = nichts
%>
<!-t1-start->
<TableCellpacing = 0Cellpadding = 0BORDER = 0WIDTH = 98%Align = Center>
<trvalign = centeralign = MiddleHeight = 18>
<tdwidth = 1bgcolor =#999999>
<tdnowrapStyle = Schriftgewicht: fett; Farbe: #ffffff; Hintergrundfarbe:#0033CCWIDTH = 64> Internet </td>
<tdalign = rightbgcolor =#eeeeeeee> <nobr> Finden Sie relevante Webseiten, die mit <B> <%= wd%> </b> <b> <%= strpagesum_bd%> </b> übereinstimmen, und nehmen Sie <B> <%= strqtime_bd%> </b> seconds </td> </td> </td> </td> </td> </td> </td> </td> </td> </td>
</tr>
<tr> <tdbgcolor =#9999999colspan = 3Height = 2> </td> </tr> </table>
</td>
</tr>
</table>
<%
ifwd = dann
Antwort.
elseifbnoresult_bd = 1Then
Antwort.Write <pALIGN = 'Center'> <fontSize = -1> Entschuldigung, es wurden keine Informationen gefunden, die Ihren Abfragebedingungen entsprechen. Bitte wählen Sie das entsprechende Schlüsselwort für Abfragen erneut aus. </Font> </p>
anders
%>
<tablewidth = 98%Align = CenterCellSpace = 0Cellpacing = 0Cellpadding = 0Border = 0>
<tr>
<tdStyle = Linienhöhe: 160%bgcolor =#ffffffwidth = 75%valign = top> <br>
<%= Strinfo%>
</td>
<tdwidth = 25%valign = top> <br> Dies ist der Raum für Sie zu spielen!
</td>
</tr>
</table>
<tablewidth = 98%Align = CenterCellSpace = 0Cellpacing = 0Cellpadding = 4Border = 0>
<tr>
<tdalign = center>
<br> <fontSize = 3> <%= Strpage%> </font>
</td>
</tr>
</table>
<%Endif
setStrinfo = nichts
%>
<hrsize = 1Width = 760Color =#0000ff>
<divalign = center> <fontSize = -1>
Bitte gehen Sie zu <Spanclass = Cred> (Wissensfreigabe -Forum) </span>, um </font> anzuzeigen
</div>
</Body>
</Html>
<%
'Sammlung von Funktionen
FUNKTIONSETHTTTPPAGE (URL)
OnErrorresumeNext
Dimhttp
setThttp = server.createObject (msxml2.xmlhttp)
Http.openget, url, false
Http.send ()
IFHTTP.REYYSTATE <> 4Then
Ausgangsfunktion
Endif
getttppage = byTestObstr (http.responsebody, gb2312)
settThttp = nichts
Ifr.number <> 0Then
Antwort.Write <divalign = 'center'> <b> Der Server, der beim Abrufen von Dateiinhalten </b> </div> fehlerhaft ist
Err.clear
Endif
Endfunktion
'Byte Stream konvertiert in String
FunktionByTestObstr (Körper, cset)
Dimobjstream
setObjstream = server.createObject (adodb.stream)
objstream.type = 1
objstream.mode = 3
objstream.open
Objstream.WriteBody
objstream.position = 0
objstream.type = 2
objstream.charset = cset
ByTestObstr = objstream.readText
objstream.close
setObjstream = nichts
Endfunktion
Abfangen von String, 1. Enthält vor und nach Strings, 2. Nicht vor und nach Strings enthalten
FunktionsstrCut (StrContent, StartStr, Endstr, Cuttype)
Dims1, S2
OnErrorresumeNext
selectCasecuttype
Fall1
S1 = Instrument (StrContent, StartStr)
S2 = Instrument (S1, StrContent, Endstr)+Len (Endstr)
Fall2
S1 = instr (strcontent, startstr)+len (startstr)
S2 = Instrument (S1, StrContent, Endstr)
Endauswahl
Isterrthen
Strcute = <pALIGN = 'Center'> <fontSize = -1> Es ist ein Fehler aufgetreten, der die Zeichenfolge abfängt. </font> </p>
Err.clear
Ausgangsfunktion
Anders
STRCUT = MID (StrContent, S1, S2-S1)
Endif
Endfunktion
%>
Kopieren Sie den oben genannten Code in Notepad und speichern Sie ihn als searchi_bd.asp, und Sie können ihn verwenden. Wenn Sie den Dateinamen ändern möchten, ändern Sie bitte auch den Blue Identification -Teil des folgenden Codes in Ihren Dateinamen
strpage = ersetzen (strpage, href = s?, href = searchi_bd.asp?)
Ein paar Erklärungen:
1. Die Baidu-Suche hat im Grunde keine Antikollektionsmaßnahmen. Der Hauptpunkt ist, dass Baidu von Zeit zu Zeit den Quellcode der Rückgabeergebnisseite ändert, sodass Sie häufig die Suchergebnisseite von Baidu beobachten sollten. Wenn sich der Code ändert, können Sie das String -Logo ändern. In Bezug auf die Antikolle ist Baidu viel großzügiger als Google. Gegenwärtig ist kein Phänomen, die IP der Quellstelle vorübergehend zu blockieren, aufgrund einer häufigen Abfrage von Baidu. Dieses Phänomen tritt häufig in Google -Abfragen auf. Wie man löst, wird es im nächsten Artikel erläutert.
2. Das Sammeln ist eher ressourcenverbraucher, und die Suche nach Dieben ist das gleiche wie die Suche nach Programmen. Versuchen Sie also, Variablen oder Objekte so früh wie möglich im Programm freizugeben. Wenn Sie nicht viel Platz für die Ressourcen haben, wird empfohlen, diese Dinge nicht zu tun.
3. Einige Leute möchten möglicherweise keine funktionalen Verbindungen von Baidu in dem Suchdieb wie Baidu-Schnappschüsse und Suchfunktionen vor Ort aufbewahren. Aus diesem Grund stelle ich eine vereinfachte Version ohne Verbindung zu Baidu im Download -Paket an. Sie können es bei Bedarf verwenden. Der Code wird in diesem Artikel nicht aufgeführt, der der Vollversion tatsächlich ähnelt.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird den falschen neuen Technologiekanal unterstützen.