2016-11-18 1 views
0

Ich versuche, den Inhalt einer Webseite mit Node.js zu scrapen und ihn mit einer Kopie derselben Seite zu vergleichen, die ich als Datei gespeichert habe , wie folgt:request() und fs.createReadStream() geben die "richtigen" Werte nicht zurück

var fs = require("fs"); 
var request = require("request"); 
var archive = ["./archive.html", "http://praguerace.com/comic/archive"]; 

request(archive[1], //request Prague Race's archive 
    function (error, response, body) { 
     if (fs.createReadStream(archive[0]) == body) //if no change occurred 
      console.log("checkpoint 1"); 
     else 
      console.log("checkpoint 2"); 
    } 
); 

Ich habe bereits das Request-Modul installiert (richtig) und verwende nicht Express.

Das Problem ist, dass das Skript weiterhin "Checkpoint 2" druckt, als ob die Antwort vom Server, den ich versuche zu kratzen, sich ständig ändert, oder Node weiß nicht, was == bedeutet.

Antwort

1

fs.createReadStream (Archiv [0]) geben einen Strom und den Inhalt nicht

Verwenden Stream-Ereignis den Inhalt, readStream.on ('open', 'Daten', etc ...

abrufen

oder nur readfile oder readFileSync

Async-Version verwenden:

request(archive[1], //request Prague Race's archive 
function (error, response, body) { 
    fs.readFile(archive[0], "utf8", function(err, data){ 
    if(data == body) 
     .... 
    else 
     .... 
    }); 
}); 

Sync Version

request(archive[1], //request Prague Race's archive 
function (error, response, body) { 
    if(fs.readFileSync(archive[0], "utf8") == body) 
     .... 
    else 
     .... 
}); 
Verwandte Themen