Maison > interface Web > js tutoriel > node.js explore et analyse les fichiers js des pages Web pour voir s'ils ont un content_node.js spécial

node.js explore et analyse les fichiers js des pages Web pour voir s'ils ont un content_node.js spécial

WBOY
Libérer: 2016-05-16 15:31:49
original
1119 Les gens l'ont consulté

Nodejs récupère le contenu de la page Web et lie l'événement de données. Les données obtenues recevront une réponse plusieurs fois. Si vous souhaitez faire correspondre le contenu global, vous devez attendre la fin de la requête et exploiter les données globales accumulées. en fin de compte !

Par exemple, si vous voulez savoir s'il y a www.baidu.com sur la page, je n'en dirai pas plus, mettez simplement le code :

//引入模块
var http = require("http"),
fs = require('fs'),
url = require('url');
//写入文件,把结果写入不同的文件
var writeRes = function(p, r) {
   fs.appendFile(p , r, function(err) {
    if(err)
       console.log(err);
    else
       console.log(r);
  });
},
//发请求,并验证内容,把结果写入文件
postHttp = function(arr, num) {
   console.log('第'+num+"条!")
   var a = arr[num].split(" - ");
   if(!a[0] || !a[1]) {
     return;
   }
   var address = url.parse(a[1]),
   options = {
     host : address.host,
     path: address.path,
     hostname : address.hostname,
     method: 'GET',
     headers: {
      'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36'
    }
   }
   var req = http.request(options, function(res) {
     if (res.statusCode == 200) {
        res.setEncoding('UTF-8');
        var data = '';
        res.on('data', function (rd) {  
          data += rd;
        });
        res.on('end', function(q) {
          if(!~data.indexOf("www.baidu.com")) {
             return writeRes('./no2.txt', a[0] + '--' + a[1] + '\n');            
          } else {
             return writeRes('./has2.txt', a[0] + '--' + a[1] + "\n");
          }
        })
     } else {
        writeRes('./error2.txt', a[0] + '--' + a[1] + '--' + res.statusCode + '\n');
     }
   });
   req.on('error', function(e) {
     writeRes('./error2.txt', a[0] + '--' + a[1] + '--' + e + '\n');
   })
   req.end();
},
//读取文件,获取需要抓取的页面
openFile = function(path, coding) {
   fs.readFile(path, coding, function(err, data) {
     var res = data.split("\n");  
     for (var i = 0, rl = res.length; i < rl; i++) {
        if(!res[i])
          continue;
        postHttp(res, i);  
     };  
   })
};
openFile('./sites.log', 'utf-8');
Copier après la connexion

Vous pouvez comprendre le code ci-dessus. Si vous avez des questions peu claires, veuillez me laisser un message. Les détails spécifiques dépendront de l'application pratique de chacun.

Ce qui suit vous présentera la capacité de Nodejs à explorer des pages Web

Premier PHP. Parlons d'abord des avantages : il existe de nombreux frameworks pour explorer et analyser du HTML en ligne, et vous pouvez simplement utiliser divers outils directement, ce qui est plus sans souci. Inconvénients : Tout d'abord, la vitesse/efficacité est un problème. Une fois, lorsque j'ai téléchargé une affiche de film, crontab était exécuté régulièrement et aucune optimisation n'était effectuée. Il y avait trop de processus PHP ouverts, ce qui surchargeait directement la mémoire. Ensuite, la grammaire est également très lente. Il y a trop de mots-clés et de symboles, et ce n'est pas assez concis. Cela donne aux gens le sentiment qu'elle n'a pas été soigneusement conçue et c'est très difficile à écrire.

Node.js. L'avantage est l'efficacité, l'efficience et l'efficience. Étant donné que le réseau est asynchrone, il est fondamentalement aussi puissant que des centaines de processus simultanés. S'il n'y a pas de calcul et de traitement complexes des données capturées, l'utilisation de la mémoire et du processeur est très faible. le goulot d'étranglement du système Cela dépend essentiellement de la bande passante et de la vitesse d'E/S d'écriture dans des bases de données telles que MySQL. Bien sûr, l'opposé de l'avantage est aussi l'inconvénient. Le réseau asynchrone signifie que vous avez besoin d'un rappel. À ce stade, si la demande commerciale est linéaire, par exemple, vous devez attendre la fin de la récupération de la page précédente et obtenir les données avant. en récupérant la page suivante. Encore plus de dépendances de couche, il y aura de terribles rappels multicouches ! Fondamentalement, à ce stade, la structure et la logique du code seront en désordre. Bien entendu, vous pouvez utiliser des outils de contrôle d’étapes et d’autres outils de contrôle de processus pour résoudre ces problèmes.

Enfin, parlons de Python. Si vous n’avez pas d’exigences extrêmes en matière d’efficacité, alors Python est recommandé ! Tout d'abord, la syntaxe de Python est très concise et la même instruction peut être enregistrée plusieurs fois sur le clavier. Ensuite, Python est très approprié pour le traitement des données, tel que l'empaquetage et le déballage des paramètres de fonction, l'analyse de listes et le traitement matriciel, ce qui est très pratique.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal