Voulez-vous utiliser ASP pour créer votre programme de collecte de voleurs préféré ? Après avoir lu l'article suivant, vous pouvez le créer vous-même. principe
Le programme de collecte appelle en fait des pages Web sur d'autres sites Web via le composant XMLHTTP en XML. Par exemple, de nombreux programmes de collecte d'informations appellent les pages Web d'actualités de Sina, et une partie du code HTML qu'elles contiennent est remplacée et les publicités sont également filtrées. Les avantages de l'utilisation d'un programme de collecte sont les suivants : il n'est pas nécessaire de maintenir le site Web, car les données du programme de collecte proviennent d'autres sites Web, et elles seront mises à jour au fur et à mesure de la mise à jour du site Web, ce qui permet d'économiser les ressources du serveur. Le programme de collecte ne contient que quelques fichiers et tout le contenu Web provient d'autres sites Web. Les inconvénients sont les suivants : l'instabilité, si le site Web cible tombe en panne, le programme tournera également mal, et si le site Web cible est mis à niveau et maintenu, la vitesse du programme de collecte devra également être modifiée en conséquence, car il s'agit d'un appel à distance, le ; la vitesse est aussi rapide que la lecture des données sur le serveur local. C'est nettement plus lent que cela.
1. Cas
Ce qui suit est une brève explication de l'application de XMLHTTP dans ASP.
Copiez le code comme suit :
<%
'Fonctions couramment utilisées
'1. Entrez l'adresse de la page Web cible et la valeur de retour getHTTPPage est le code HTML de la page Web cible.
fonction getHTTPage(url)
dimHttp
définir Http=server.createobject(MSXML2.XMLHTTP)
Http.open GET,url,false
Http.envoyer()
si Http.readystate<>4 alors
fonction de sortie
finir si
getHTTPPage=bytesToBstr(Http.responseBody,GB2312)
définir http = rien
si err.number<>0 alors err.Clear
fonction de fin
'2. Convertissez Ranma. Utilisez directement xmlhttp pour appeler des pages Web avec des caractères chinois. Vous pouvez le convertir via le composant adodb.stream.
Fonction BytesToBstr(corps)
objstream obscur
définir objstream = Server.CreateObject (adodb.stream)
objstream.Type = 1
objstream.Mode =3
objstream.Ouvrir
objstream.Écrire le corps
objstream.Position = 0
objstream.Type = 2
objstream.Charset = GB2312 'Convertissez l'encodage UTF-8 par défaut d'origine en encodage GB2312. Sinon, l'utilisation directe du composant XMLHTTP pour appeler une page Web avec des caractères chinois entraînera un code tronqué.
BytesToBstr = objstream.ReadText
objstream.Fermer
définir objstream = rien
Fonction de fin
'Essayez d'appeler le contenu HTML de http://www.vevb.com
Faible URL,Html
Url=http://www.vevb.com ;
Html = getHTTPage(Url)
Réponse.write Html
%>
2. Plusieurs fonctions couramment utilisées
(1) Fonction InStr
décrire
Renvoie la position où un certain caractère (string2) apparaît pour la première fois dans une autre chaîne (string1).
grammaire
InStr(chaîne1, chaîne2)
Par exemple:
Dim SearchString, SearchChar
SearchString =http://www.vevb.com ' La chaîne à rechercher.
SearchChar = jb51 'Recherchez jb51.
MyBK = Instr(SearchString, SearchChar) 'Retour 8
'Renvoie 0 s'il n'est pas trouvé, par exemple :
Char de recherche = BK
MyBK = Instr (SearchString, SearchChar) ' Retour 0
(2) Fonction intermédiaire
décrire
Renvoie le nombre spécifié de caractères d'une chaîne.
grammaire
Milieu (chaîne, début, fin)
Par exemple:
Dim MyBK
MyBK = Mid (notre design BK (www.google), 7, 12) 'Intercepte la chaîne 12 caractères après le 7ème caractère de notre design BK (www.google)
"À ce moment-là, la valeur de MyBK devient www.google
(3) Remplacer la fonction
Dim SearchString, SearchChar
SearchString = Notre conception BK est une chaîne de site Web de ressources de création de sites Web dans laquelle effectuer une recherche.
SearchString = Remplacer (SearchString, conception BK, Www.google)
« À l'heure actuelle, la valeur de SearchString devient notre site Web. Www.google est un site Web de ressources de construction de sites Web.
3. Interceptez le code HTML de la zone spécifiée
Par exemple, je souhaite uniquement obtenir la partie texte entre <td> et </td> dans le code HTML suivant :
<html>
<title>(www.google)Moteur de recherche Google</title>
<corps>
<tableau>
<tr><td></td></tr>
<tr><td id=Content>BK (www.google) Le moteur de recherche Google est un site proposant de nombreuses ressources...</td></tr>
</table>
</corps>
</html>
<%
…
Dim StrBK, démarrer, terminer, RsBK
StrBK=getHTTPPage (l'adresse de la page Web)
start=Instr(StrBK,<td id=Content>) 'La fonction ici est d'obtenir la position du début de la chaîne. Quelqu'un va demander ici : le code original est <td id=Content>, pourquoi appelez-vous <td id=Content> ici ? Réponse : en asp (pour être précis, il est représenté par deux guillemets doubles en VBscript Un double quote, car les guillemets doubles sont un caractère sensible pour le programme).
over=Instr(StrBK,…</td></tr>)'La fonction ici est d'obtenir la position de la fin de la chaîne.
'Quelqu'un va demander à nouveau ici :( : Pourquoi y a-t-il trois points supplémentaires devant le code HTML que le programme appelle... ? Réponse : Astuce : Il y a aussi un </td></tr> dans ce qui précède ligne, si vous utilisez </td></ tr> pour localiser, le programme considérera par erreur </td></tr> dans la ligne ci-dessus comme la fin de la chaîne à obtenir.
RsBK=mid(StrBK,start,over-start) 'La fonction ici est d'extraire la chaîne entre le caractère de début et le caractère de fin dans StrBK. J'ai également parlé de la fonction mid dans la section précédente ; le surdémarrage consiste à calculer la distance entre la position de début et la position de fin, qui est le nombre de caractères.
réponse.write(RsBK) 'Enfin afficher le contenu obtenu par le programme
%>
Ne soyez pas trop content lorsque vous l'exécuterez, vous constaterez qu'il y a une erreur dans le code html de la page. Pourquoi ? Parce que le code html que vous obtenez est :
<td id=Content>BK (www.google) Le moteur de recherche Google est un site proposant de nombreuses ressources...
Avez-vous vu ça ? Le code HTML est incomplet ! Ce qu'il faut faire? L'instruction start=Instr(StrBK,<td id=Content>) obtient le numéro de position de <td id=Content> dans StrBK. Nous pouvons maintenant ajouter 17 après l'instruction du programme, puis le programme pointera vers la position Le caractère après. <td id=Contenu>.
Bon, le programme va changer comme suit :
<%
…
Dim StrBK, démarrer, terminer, RsBK
StrBK=getHTTPPage (l'adresse de la page Web)
start=Instr(StrBK,<td id=Content>) + 17
over=Instr(StrBK,…</td></tr>) 'Ici, vous pouvez également soustraire sept (-7) pour supprimer 3 points
RsBK = mid (StrBK, start, over-start)
réponse.write(RsBK)
%>
C'est bon, on peut voler ce qu'on veut et l'afficher sur notre propre page, haha~
4. Supprimez ou modifiez les caractères obtenus
Remplacez BK(www.google) dans RsBK par BK :
RsBK=remplacer(RsBK,BK(www.google),BK)
Ou supprimez (www.google) directement :
RsBK=remplacer(RsBK,(www.google),)
Bon, maintenant RsBK devient : le moteur de recherche BK Google est un site avec de nombreuses ressources...
Mais en fait, la fonction replace peut ne pas convenir à certaines situations. Par exemple, nous souhaitons supprimer toutes les connexions dans une certaine chaîne. Les connexions peuvent inclure plusieurs types, et replace ne peut en remplacer qu'un seul. Une autre fonction de remplacement correspondante pour le remplacer ?
Mais vous pouvez utiliser des expressions régulières pour effectuer ce travail à la place. Je n’entrerai pas dans les détails ici.
(1) Comment transformer la page du site Web de l’autre partie en notre propre site ?
La réponse est : utilisez la fonction de remplacement et la transmission des paramètres de page.
Par exemple, la page de l'autre partie contient le code de changement de page : <a href=2.htm>Page suivante</a>. Nous pouvons d'abord utiliser le contenu mentionné ci-dessus pour obtenir cette chaîne, puis utiliser la fonction de remplacement : RsBK=. remplacer( RsBK,<a href=,<a href=page.asp?Url=)
Obtenez ensuite la valeur du paramètre Url dans le programme page.asp et enfin utilisez la technologie de collecte pour obtenir le contenu souhaité sur la page suivante.
(2) Comment stocker le contenu obtenu dans la base de données
En raison de l'espace limité, je le mentionnerai brièvement ici.
C'est en fait très simple :
Traitez le contenu volé pour éviter les erreurs d'injection SQL lors de l'écriture dans la base de données, par exemple : replace(String,','')
Exécutez ensuite une commande SQL à insérer dans la base de données et tout ira bien ~
Ce qui précède ne représente que quelques applications de base du composant XMLHTTP. En fait, il peut également implémenter de nombreuses fonctions, telles que l'enregistrement d'images distantes sur le serveur local et l'utilisation du composant adodb.stream pour enregistrer les données acquises dans la base de données. La collection a un large éventail de fonctions et d'utilisations.