J'ai développé plusieurs programmes de collecte et étudié de nombreux codes de programmes de collecte, j'ai donc une petite compréhension des principes des programmes de collecte. Parlons d’abord du principe de collecte :
Les principales étapes de la procédure de recouvrement sont les suivantes :
1. Obtenir le contenu des pages collectées
2. Extrayez toutes les données utilisées du code d'acquisition
1. Obtenir le contenu des pages collectées
Les méthodes ASP couramment utilisées que je connais actuellement pour obtenir le contenu des pages collectées sont :
1. Utilisez le composant serverXMLHTTP pour obtenir des données
Copiez le code comme suit :
Fonction GetBody(weburl)
'Créer un objet
Faible ObjXMLHTTP
Définir ObjXMLHTTP=Server.CreateObject(MSXML2.serverXMLHTTP)
'Fichier de requête, sous forme asynchrone
ObjXMLHTTP.Ouvrir GET,weburl,False
ObjXMLHTTP.send
Tandis que ObjXMLHTTP.readyState <> 4
ObjXMLHTTP.waitForResponse 1000
Wende
'Obtenir le résultat
GetBody=ObjXMLHTTP.responseBody
'Libérer l'objet
Définir ObjXMLHTTP=Rien
Fonction de fin
Méthode d'appel :
GetBody(adresse URLf du fichier)
2. Ou un composant XMLHTTP pour obtenir des données
Copiez le code comme suit :
Fonction GetBody(weburl)
'Créer un objet
Définir la récupération = CreateObject (Microsoft.XMLHTTP)
Avec récupération
.Ouvrez Get, weburl, False, ,
.Envoyer
GetBody = .ResponseBody
Terminer par
'Libérer l'objet
Définir la récupération = Rien
Fonction de fin
Méthode d'appel :
GetBody(adresse URLf du fichier)
Le contenu des données ainsi obtenu doit encore être codé et converti avant de pouvoir être utilisé.
Copiez le code comme suit :
Fonction BytesToBstr(corps,Cset)
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 = Cset
BytesToBstr = objstream.ReadText
objstream.Fermer
définir objstream = rien
Fonction de fin
Méthode d'appel : l'encodage BytesToBstr (données à convertir, encodage) est couramment utilisé comme GB2312 et UTF-8
2. Extrayez toutes les données utilisées du code d'acquisition
Les méthodes dont je dispose actuellement sont :
1. Utilisez la fonction MID intégrée d'ASP pour intercepter les données requises
Copiez le code comme suit :
Corps de la fonction (wstr, start, over)
start=Nouvellechaîne(wstr,start)
'Définissez la balise de début unique des données qui doivent être traitées
over=Nouvellechaîne(wstr,over)
« Correspondant au début est la seule balise de fin des données qui doivent être traitées.
corps=mid(wstr,start,over-start)
'Définir la plage de pages affichées
Fonction de fin
Méthode d'appel : corps (contenu de la page collectée, balise de début, balise de fin)
2. Utilisez des expressions régulières pour obtenir les données requises
Copiez le code comme suit :
Corps de la fonction (wstr, start, over)
Set xiaoqi = Nouvel objet de configuration Regexp'set
xiaoqi.IgnoreCase = True'Ignorer la casse
xiaoqi.Global = True' défini sur la recherche en texte intégral
xiaoqi.Pattern = &start&.+?&over&'expression régulière
Set Matches =xiaoqi.Execute(wstr)'Démarrer l'exécution de la configuration
définir xiaoqi = rien
corps=
Pour chaque match dans les matchs
body=body&Match.Value 'Correspondance de boucle
Suivant
Fonction de fin
Méthode d'appel : corps (contenu de la page collectée, balise de début, balise de fin)
Idées détaillées pour les procédures de collecte :
1. Obtenez l'adresse de chaque page de la page de liste paginée du site
À l'heure actuelle, la plupart des sites Web dynamiques ont des règles pour les adresses de radiomessagerie, telles que :
page dynamique
Première page : index.asp?page=1
Deuxième page : index.asp?page=2
La troisième page : index.asp?page=3
.....
page statique
Première page : page_1.htm
Deuxième page : page_2.htm
La troisième page : page_3.htm
.....
Pour obtenir l'adresse de chaque page de la page de liste de pagination du site Web, il vous suffit d'utiliser des variables pour remplacer les caractères changeants de chaque adresse de page, telles que : page_<%=&page&%>.htm
2. Obtenez le contenu de la page de liste paginée du site Web collecté
3. Extrayez l'adresse de connexion URL de la page de contenu collectée du code de la liste de pagination
La plupart des liens vers des pages de contenu dans des pages paginées ont également des règles fixes, telles que :
<a href=url1>Connexion 1</a> <br>
<a href=url2>Connexion 2</a> <br>
<a href=url3>Connexion 3</a> <br>
Utilisez le code suivant pour obtenir une collection de connexions URL
Copiez le code comme suit :
Définir xiaoqi = Nouvelle expression rationnelle
xiaoqi.IgnoreCase = Vrai
xiaoqi.Global = Vrai
xiaoqi.Pattern = .+?
Définir les correspondances =xiaoqi.Execute (contenu de la liste des pages)
définir xiaoqi = rien
URL =
Pour chaque match dans les matchs
url=url&Match.Valeur
Suivant
4. Obtenez le contenu de la page de contenu collectée et interceptez les données à obtenir de la page de contenu collectée selon la marque d'extraction.
Puisqu'il s'agit d'une page générée dynamiquement, la plupart des pages de contenu ont les mêmes balises HTML. Nous pouvons extraire les parties requises du contenu en fonction de ces balises régulières.
comme:
Chaque page a un titre de page Web <title>Titre de la page Web</title>. Vous pouvez utiliser la fonction d'interception MID que j'ai écrite ci-dessus pour obtenir la valeur entre <title></title>, ou vous pouvez utiliser des expressions régulières pour l'obtenir.
Exemple : body(<title>Titre de la page Web</title>,<title>,</title>)