Möchten Sie ASP verwenden, um Ihr bevorzugtes Dieb-Sammelprogramm zu erstellen? Nachdem Sie den folgenden Artikel gelesen haben, können Sie es selbst erstellen. Prinzip
Das Erfassungsprogramm ruft tatsächlich Webseiten auf anderen Websites über die XMLHTTP-Komponente in XML auf. Beispielsweise rufen viele Nachrichtenprogramme die Nachrichten-Webseiten von Sina auf und einige der darin enthaltenen HTML-Seiten werden ersetzt, und auch Werbung wird gefiltert. Die Vorteile der Verwendung eines Erfassungsprogramms sind: Es ist nicht erforderlich, die Website zu pflegen, da die Daten im Erfassungsprogramm von anderen Websites stammen und im Allgemeinen Serverressourcen einsparen können Das Sammlungsprogramm verfügt nur über wenige Dateien und alle Webinhalte stammen von anderen Websites. Nachteile sind: Instabilität, wenn die Zielwebsite fehlschlägt, geht auch das Programm schief, und wenn die Zielwebsite aktualisiert und gewartet wird, muss auch das Erfassungsprogramm entsprechend geändert werden, da es sich um einen Remote-Aufruf handelt Die Geschwindigkeit ist so hoch wie das Lesen von Daten auf dem lokalen Server. Sie ist definitiv langsamer.
1. Fälle
Im Folgenden finden Sie eine kurze Erläuterung der Anwendung von XMLHTTP in ASP.
Kopieren Sie den Codecode wie folgt:
<%
'Häufig verwendete Funktionen
'1. Geben Sie die URL der Zielwebseite ein und der Rückgabewert getHTTPPage ist der HTML-Code der Zielwebseite.
Funktion getHTTPage(url)
dimHttp
set Http=server.createobject(MSXML2.XMLHTTP)
Http.open GET,url,false
Http.send()
wenn Http.readystate<>4 dann
Exit-Funktion
Ende wenn
getHTTPPage=bytesToBstr(Http.responseBody,GB2312)
setze http=nichts
Wenn err.number<>0, dann err.Clear
Endfunktion
2. Konvertieren Sie Ranma direkt, um Webseiten mit chinesischen Zeichen aufzurufen. Sie können es über die Komponente adodb.stream konvertieren.
Funktion BytesToBstr(body)
dim objstream
set objstream = Server.CreateObject(adodb.stream)
objstream.Type = 1
objstream.Mode =3
objstream.Öffnen
objstream.Text schreiben
objstream.Position = 0
objstream.Type = 2
objstream.Charset = GB2312 'Konvertieren Sie die ursprüngliche Standard-UTF-8-Kodierung in die GB2312-Kodierung. Andernfalls führt die direkte Verwendung der XMLHTTP-Komponente zum Aufrufen einer Webseite mit chinesischen Zeichen zu verstümmeltem Code.
BytesToBstr = objstream.ReadText
objstream.Schließen
set objstream = nichts
Funktion beenden
'Versuchen Sie, den HTML-Inhalt von http://www.vevb.com aufzurufen
Dunkle URL, HTML
URL=http://www.vevb.com;
Html = getHTTPage(URL)
Response.write Html
%>
2. Mehrere häufig verwendete Funktionen
(1) InStr-Funktion
beschreiben
Gibt die Position zurück, an der ein bestimmtes Zeichen (string2) zum ersten Mal in einem anderen String (string1) erscheint.
Grammatik
InStr(string1, string2)
Zum Beispiel:
Dimmen Sie SearchString, SearchChar
SearchString =http://www.vevb.com ' Die Zeichenfolge, nach der gesucht werden soll.
SearchChar = jb51 'Suchen Sie nach jb51.
MyBK = Instr(SearchString, SearchChar) ' Rückgabe 8
'Gib 0 zurück, wenn nicht gefunden, zum Beispiel:
SearchChar = BK
MyBK = Instr(SearchString, SearchChar) ' Rückgabe 0
(2) Mid-Funktion
beschreiben
Gibt die angegebene Anzahl von Zeichen aus einer Zeichenfolge zurück.
Grammatik
Mid(string, start, over)
Zum Beispiel:
Dimmen Sie MyBK
MyBK = Mid (unser BK-Design (www.google), 7, 12) 'Fangen Sie die Zeichenfolge 12 Zeichen nach dem 7. Zeichen unseres BK-Designs (www.google) ab
„Zu diesem Zeitpunkt wird der Wert von MyBK zu www.google
(3) Funktion ersetzen
Dimmen Sie SearchString, SearchChar
SearchString = Unser BK-Design ist die Zeichenfolge einer Website-Erstellungsressource, in der gesucht werden soll.
SearchString =Replace(SearchString,BK design,Www.google)
„Zu diesem Zeitpunkt wird der Wert von SearchString zu unserem Www.google ist eine Ressourcen-Website zum Erstellen von Websites.“
3. Fangen Sie den HTML-Code des angegebenen Bereichs ab
Beispielsweise möchte ich im folgenden HTML-Code nur den Textteil zwischen <td> und </td> abrufen:
<html>
<title>(www.google)Google-Suchmaschine</title>
<Körper>
<Tabelle>
<tr><td></td></tr>
<tr><td id=Content>BK (www.google) Die Google-Suchmaschine ist eine Website mit vielen Ressourcen...</td></tr>
</table>
</body>
</html>
<%
…
Dim StrBK,start,over,RsBK
StrBK=getHTTPPage (die Adresse der Webseite)
start=Instr(StrBK,<td id=Content>) 'Die Funktion hier besteht darin, die Position des Anfangs der Zeichenfolge zu ermitteln. Jemand wird hier fragen: Der ursprüngliche Code ist <td id=Content>. Warum rufen Sie hier <td id=Content> auf? Antwort: in asp (um genau zu sein, wird es in VBscript durch zwei doppelte Anführungszeichen dargestellt.) Anführungszeichen, da doppelte Anführungszeichen ein sensibles Zeichen für das Programm sind).
over=Instr(StrBK,…</td></tr>)'Die Funktion hier besteht darin, die Position des Endes der Zeichenfolge zu ermitteln.
'Hier wird noch einmal jemand fragen:( : Warum gibt es drei zusätzliche Punkte vor dem HTML-Code, den das Programm aufruft...? Antwort: Tipp: Oben steht auch ein </td></tr> Wenn Sie zum Suchen </td></tr> verwenden, betrachtet das Programm </td></tr> in der obigen Zeile fälschlicherweise als Ende der abzurufenden Zeichenfolge.
RsBK=mid(StrBK,start,over-start) 'Die Funktion hier besteht darin, die Zeichenfolge zwischen dem Startzeichen und dem Endzeichen in StrBK zu extrahieren. Ich habe im vorherigen Abschnitt auch über die Mid-Funktion gesprochen; Overstart dient dazu, den Abstand zwischen der Startposition und der Endposition zu berechnen, also der Anzahl der Zeichen.
Response.write(RsBK) 'Endlich den vom Programm erhaltenen Inhalt ausgeben
%>
Seien Sie nicht zu glücklich. Wenn Sie es ausführen, werden Sie feststellen, dass im HTML-Code der Seite ein Fehler vorliegt. Denn der HTML-Code, den Sie erhalten, ist:
<td id=Content>BK (www.google) Die Google-Suchmaschine ist eine Website mit vielen Ressourcen ...
Hast du das gesehen? Es ist unvollständiger HTML-Code vorhanden! Was zu tun? Die Anweisung start=Instr(StrBK,<td id=Content>) erhält die Positionsnummer von <td id=Content> in StrBK. Jetzt können wir nach der Programmanweisung 17 hinzufügen, dann zeigt das Programm auf die Position Das Zeichen danach <td id=Content>.
Okay, das Programm wird sich wie folgt ändern:
<%
…
Dim StrBK,start,over,RsBK
StrBK=getHTTPPage (die Adresse der Webseite)
start=Instr(StrBK,<td id=Content>) + 17
over=Instr(StrBK,…</td></tr>) 'Hier können Sie auch sieben (-7) subtrahieren, um 3 Punkte zu entfernen
RsBK=mid(StrBK,start,over-start)
Antwort.write(RsBK)
%>
Das ist in Ordnung, wir können stehlen, was wir wollen, und es auf unserer eigenen Seite anzeigen, haha~
4. Löschen oder ändern Sie die erhaltenen Zeichen
Ersetzen Sie BK(www.google) in RsBK durch BK:
RsBK=replace(RsBK,BK(www.google),BK)
Oder direkt löschen (www.google):
RsBK=replace(RsBK,(www.google),)
Okay, jetzt wird aus RsBK: BK. Die Google-Suchmaschine ist eine Website mit vielen Ressourcen ...
Tatsächlich ist die Ersetzungsfunktion für einige Situationen möglicherweise nicht geeignet. Wenn wir beispielsweise alle Verbindungen in einer bestimmten Zeichenfolge entfernen möchten, können wir nur einen bestimmten Typ ersetzen Eine andere entsprechende Ersetzungsfunktion, um es zu ersetzen?
Sie können diese Aufgabe jedoch auch mithilfe regulärer Ausdrücke erledigen. Ich werde hier nicht auf Details eingehen.
(1) Wie kann das Umblättern der Website der anderen Partei in unsere eigene verarbeitet werden?
Die Antwort lautet: Verwenden Sie die Ersetzungsfunktion und die Übergabe von Seitenparametern.
Die Seite der anderen Partei enthält beispielsweise den folgenden Umblättercode: <a href=2.htm>Nächste Seite</a> Wir können zuerst den oben genannten Inhalt verwenden, um diese Zeichenfolge zu erhalten, und dann die Ersetzungsfunktion verwenden: RsBK= ersetzen( RsBK,<a href=,<a href=page.asp?Url=)
Rufen Sie dann den Parameterwert von URL im Programm page.asp ab und verwenden Sie schließlich die Sammlungstechnologie, um den gewünschten Inhalt auf der nächsten Seite abzurufen.
(2) So speichern Sie den erhaltenen Inhalt in der Datenbank
Aus Platzgründen werde ich es hier kurz erwähnen.
Eigentlich ist es ganz einfach:
Verarbeiten Sie den gestohlenen Inhalt, um SQL-Injection-Fehler beim Schreiben in die Datenbank zu verhindern, zum Beispiel: replace(String,','')
Führen Sie dann einen SQL-Befehl aus, um ihn in die Datenbank einzufügen, und alles ist in Ordnung
Dies sind nur einige grundlegende Anwendungen der XMLHTTP-Komponente. Tatsächlich können damit auch viele Funktionen implementiert werden, z. B. das Speichern von Remote-Bildern auf dem lokalen Server und die Verwendung der Komponente „adodb.stream“ zum Speichern der erfassten Daten in der Datenbank. Die Sammlung verfügt über ein breites Spektrum an Funktionen und Verwendungsmöglichkeiten.