2017-05-31 2 views
0

Ich benutze htmlparser2 in nodejs, um eine HTML-Seite zu analysieren. Ich analysiere eine Seite, um die Links zu anderen Seiten zu erhalten. Dann würde ich gerne diese Links analysieren (die Parsing-Funktion ist nicht die gleiche wie auf der ersten analysierten Seite), um weitere Informationen zu erhalten, die ich neben diesen Links brauche. Mein Problem ist, dass ich nicht weiß, wie mehrere Seiten analysiert werden. Wenn ich Links in Array setze, dann durchschlinge und den Parser für jede Seite aufruft, funktioniert das einfach nicht wegen der asynchronen Natur. Selbst wenn ich mehrere Anfragen in der for-Schleife anrufe, würde es nicht alle Verbindungen analysieren, und ich bin immer noch mit einem Problem fest, das Anforderungsergebnis aus der tatsächlichen Anfrage zu bekommen.Htmlparser2 Parsen, um Links zu erhalten und dann diese Links zu analysieren (node.js)

request(link,function(error,response,body) 
{ 
     var obj = parsingData(body); //parsingData is my parsing function 


     for(var i = 0; i < obj.length; i++){ 
      var newLink = obj[i].link; 

      request(newLink,function(error,response,body) 
      { 
        var pObj = parsingPasma(body); 
        console.log(pObj); 
      } 

      }); 
     //how would I get pObj here, to update obj array + wait for the request to finish? 
     } 

}); 

Antwort

0

async.js kann Ihnen helfen, asynchronen Code einfach zu verwalten. In diesem Fall möchten Sie nach Abschluss einer anderen asynchronen Funktion Code ausführen, damit Sie die Wasserfallfunktion von async.js problemlos verwenden können. Informationen finden Sie hier: https://caolan.github.io/async/docs.html#waterfall

Verwandte Themen