Heim > Web-Frontend > js-Tutorial > Hauptteil

node.js durchsucht und analysiert die JS-Dateien von Webseiten, um festzustellen, ob sie über spezielle content_node.js verfügen

WBOY
Freigeben: 2016-05-16 15:31:49
Original
1056 Leute haben es durchsucht

Nodejs ruft den Webseiteninhalt ab und bindet das Datenereignis. Wenn Sie den globalen Inhalt abgleichen möchten, müssen Sie warten, bis die Anforderung beendet ist, und die gesammelten globalen Daten verarbeiten am Ende Veranstaltung!

Wenn Sie beispielsweise herausfinden möchten, ob sich www.baidu.com auf der Seite befindet, werde ich nicht mehr sagen, sondern einfach den Code eingeben:

//引入模块
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');
Nach dem Login kopieren

Sie können den obigen Code verstehen, wenn Sie unklare Fragen haben, hinterlassen Sie mir bitte eine Nachricht. Die spezifischen Details hängen von der jeweiligen Anwendung in der Praxis ab.

Im Folgenden wird Ihnen die Fähigkeit von Nodejs vorgestellt, Webseiten zu crawlen

Erstes PHP. Lassen Sie uns zunächst über die Vorteile sprechen: Es gibt viele Frameworks zum Crawlen und Parsen von HTML online, und Sie können verschiedene Tools einfach direkt verwenden, was sorgenfreier ist. Nachteile: Erstens ist Geschwindigkeit/Effizienz ein Problem. Als ich einmal ein Filmplakat heruntergeladen habe, wurde crontab regelmäßig ausgeführt und es wurde keine Optimierung durchgeführt. Es wurden zu viele PHP-Prozesse geöffnet, was den Speicher direkt überlastete. Dann ist die Grammatik auch sehr langsam, es gibt zu viele Schlüsselwörter und Symbole, und es gibt den Leuten das Gefühl, dass sie nicht sorgfältig entworfen wurde, und es ist sehr mühsam zu schreiben.

Node.js. Der Vorteil ist Effizienz, Effizienz und Effizienz, da das Netzwerk im Grunde genauso leistungsfähig ist wie Hunderte gleichzeitiger Prozesse. Wenn keine komplexe Berechnung und Verarbeitung der erfassten Daten erfolgt Der Systemengpass hängt im Wesentlichen von der Bandbreite und der E/A-Geschwindigkeit beim Schreiben in Datenbanken wie MySQL ab. Das Gegenteil des Vorteils ist natürlich auch der Nachteil. Ein asynchrones Netzwerk bedeutet, dass Sie zu diesem Zeitpunkt beispielsweise einen Rückruf benötigen, bis der Abruf der vorherigen Seite abgeschlossen ist Beim Abrufen der nächsten Seite kommt es zu schrecklichen Rückrufen auf mehreren Ebenen! Im Grunde genommen werden die Codestruktur und die Logik zu diesem Zeitpunkt ein Chaos sein. Natürlich können Sie zur Lösung dieser Probleme Schritt- und andere Prozesssteuerungstools verwenden.

Lassen Sie uns abschließend über Python sprechen. Wenn Sie keine extremen Anforderungen an die Effizienz haben, ist Python zu empfehlen! Erstens ist die Syntax von Python sehr prägnant und dieselbe Anweisung kann viele Male auf der Tastatur gespeichert werden. Dann eignet sich Python sehr gut für die Datenverarbeitung, z. B. das Packen und Entpacken von Funktionsparametern, die Listenanalyse und die Matrixverarbeitung, was sehr praktisch ist.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!