Advertisement
robertohozza

Untitled

Mar 20th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. var request = require("request");
  2. var cheerio = require("cheerio");
  3. var fs = require("fs");
  4. var Q = require('q');
  5. var images = [];
  6. var prod = [];
  7. var nazov = [];
  8.  
  9. request('http://www.orava.eu/produkty/led-televizory/vsetky-televizory', function(err, resp, body){
  10.  
  11. if(!err && resp.statusCode == 200) {
  12. var req = cheerio.load(body);
  13. req('span.catItemImage').children().each(function(){
  14. var link = req(this).attr('href');
  15. prod.push('http://www.orava.eu' + link);
  16. });
  17.  
  18. var results = [];
  19. prod.forEach(processUrl);
  20. function processUrl(url) {
  21. //we use deferred object so we can know when the request is done
  22. var deferred = Q.defer();
  23.  
  24. var result = {
  25. url: url,
  26. promise: deferred.promise
  27. };
  28. results.push(result);
  29.  
  30.  
  31. request(url, function(err, resp, body){
  32. if(!err && resp.statusCode == 200) {
  33. var $ = cheerio.load(body);
  34. $('.itemTitle').each(function(){
  35. var name = $(this).children().text();
  36. nazov.push(name);
  37. deferred.resolve(nazov);
  38. result.nazov = nazov;
  39. });
  40. $('a.sigProLink', 'div.itemImageGallery').each(function(){
  41. var url = $(this).attr('href');
  42. images.push('http://www.orava.eu' + url);
  43. deferred.resolve(images);
  44. result.images = images;
  45. });
  46. }
  47. fs.writeFile("output.txt", JSON.stringify({nazov, images}, null, 4), function(err){
  48. if(err) {
  49. console.log(err);
  50. }
  51. else {
  52. console.log("Data boli pridane");
  53. }
  54. })
  55. });
  56. Q.all(results.map(function(i){i.promise}))
  57. .then(sendResponse) //when all promises are done it calls this
  58. .catch(sendError); //if any promise fails it calls this
  59.  
  60. function sendError(error){
  61. res.status(500).json({failed: error});
  62. }
  63. function sendResponse(data){ //data = response from every resolve call
  64. //process results and convert to your response
  65. return res.send(results);
  66. }
  67. }
  68. }
  69. });
  70.  
  71. /*
  72.  
  73. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement