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 :
Instable, si le site Web cible tourne mal, 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, la vitesse est plus lente ; que de lire les données sur le serveur local.
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.google ci-dessous
Faible URL,Html
Url=http://www.google;
Html = getHTTPage(Url)
Réponse.write Html
%>
2. Plusieurs fonctions couramment utilisées
Fonction InStr
Description Renvoie la position à laquelle un certain caractère (string2) apparaît pour la première fois dans une autre chaîne (string1).
SyntaxeInStr(string1, string2)
Par exemple:
Dim SearchString, SearchChar
SearchString =http://www.google ' La chaîne à rechercher.
SearchChar = blue1000 'Recherchez blue1000.
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
Fonction intermédiaire
Description : renvoie le nombre spécifié de caractères d'une chaîne.
SyntaxMid(chaîne, début, fin)
Par exemple:
Dim MyBK
MyBK = Mid (notre design BK (www.google), 7, 12) 'Intercepter la chaîne 12 caractères après le 7ème caractère de notre design BK (www.google)' A ce moment, la valeur de MyBK devient www.google
Fonction de remplacement
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 =Replace(SearchString, BK design, Www.google)'À l'heure actuelle, la valeur de SearchString devient notre 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>BK (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, surdémarrage). 'La fonction ici est d'extraire la chaîne entre le caractère de début et le caractère over dans StrBK. J'ai également parlé de la fonction mid dans la section précédente ; , c'est-à-dire 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 avez obtenu est : <td id=Content>BK (www.google) Le moteur de recherche Google est un site avec 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 contenu de <td id=Content> dans
Le numéro de position dans StrBK, nous pouvons maintenant ajouter 17 après l'instruction du programme, puis le programme pointera la position vers le caractère après <td id=Content>.
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 : BK Le moteur de recherche Google est un site avec de nombreuses ressources... Mais en fait, la fonction de remplacement peut ne pas convenir à certaines situations. Par exemple, nous souhaitons remplacer toutes les connexions dans une certaine chaîne Remove. . Les connexions peuvent inclure de nombreux types, et le remplacement ne peut en remplacer qu'un spécifique. Nous ne pouvons pas le remplacer par une fonction de remplacement correspondante, n'est-ce pas ?