Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var request = require("request");
- var cheerio = require("cheerio");
- var fs = require("fs");
- var Q = require('q');
- var images = [];
- var prod = [];
- var nazov = [];
- request('http://www.orava.eu/produkty/led-televizory/vsetky-televizory', function(err, resp, body){
- if(!err && resp.statusCode == 200) {
- var req = cheerio.load(body);
- req('span.catItemImage').children().each(function(){
- var link = req(this).attr('href');
- prod.push('http://www.orava.eu' + link);
- });
- var results = [];
- prod.forEach(processUrl);
- function processUrl(url) {
- //we use deferred object so we can know when the request is done
- var deferred = Q.defer();
- var result = {
- url: url,
- promise: deferred.promise
- };
- results.push(result);
- request(url, function(err, resp, body){
- if(!err && resp.statusCode == 200) {
- var $ = cheerio.load(body);
- $('.itemTitle').each(function(){
- var name = $(this).children().text();
- nazov.push(name);
- deferred.resolve(nazov);
- result.nazov = nazov;
- });
- $('a.sigProLink', 'div.itemImageGallery').each(function(){
- var url = $(this).attr('href');
- images.push('http://www.orava.eu' + url);
- deferred.resolve(images);
- result.images = images;
- });
- }
- fs.writeFile("output.txt", JSON.stringify({nazov, images}, null, 4), function(err){
- if(err) {
- console.log(err);
- }
- else {
- console.log("Data boli pridane");
- }
- })
- });
- Q.all(results.map(function(i){i.promise}))
- .then(sendResponse) //when all promises are done it calls this
- .catch(sendError); //if any promise fails it calls this
- function sendError(error){
- res.status(500).json({failed: error});
- }
- function sendResponse(data){ //data = response from every resolve call
- //process results and convert to your response
- return res.send(results);
- }
- }
- }
- });
- /*
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement