Cześć,
Nie wiem czy dobry wątek, jeżeli nie to przepraszam :)
Zaznaczę od tego, że jestem osobą mega początkującą więc sorry za babole.
Próbuję dla własnych potrzeb napisać crawler, który zbiera interesujące mnie dane z konkretnej strony. Do tego celu korzystam z https://www.npmjs.com/package/crawler. Nie mam problemu z wyciągnięciem danych, ale mam problem z ich późniejszym wykorzystaniem. Chciałbym żeby to działało w ten sposób:
- pobieram dane z tablicy zawierającej adresy URL
- dodaję te dane do nowej tablicy
- wykorzystuje dane z tablicy (np. export do csv i inne rzeczy)
var Crawler = require("crawler");
const urls = ['jakiś_adres_url', 'kolejny_adres_url', 'jeszcze_inny_adres_url'];
let array = [];
var c = new Crawler({
maxConnections : 10,
// This will be called for each crawled page
callback : function (error, res, done) {
if(error){
console.log(error);
}else{
var $ = res.$;
let img = $('img#bigpic').attr('src');
const href = res.request.uri.href
let check = "";
if (img == "jakiś_url_obrazka") {
check = "brak zdjęcia";
} else if (!img){
check = "nie produkt";
img = "nie produkt";
} else {
check = "jest zdjęcie";
}
array.push({
Url: href,
Zdjecie: img,
Czy_jest_zdjecie: check,
})
}
done();
}
});
c.queue(urls);
// I do tej części wszystko mi działa, ale teraz chciałbym tą tablicę wykorzystać. Jeżeli ją wyświetlę w konsoli to pokazuje się pusta tablica.
Jak mogę wykorzystać stworzoną tablicę array? Z tego co rozumiem to ten crawler działa asynchronicznie(?), dlatego wyświetlając tablicę w konsoli wyświetla mi się pusta tablica i dopiero potem crawler kończy swoją robotę. Czytałem o różnych rozwiązaniach (callback, promises itp.), ale nie potrafię tego ogarnąć. Będę wdzięczny za pomoc :)