Advertisement
Guest User

Untitled

a guest
Sep 15th, 2014
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var express = require('express');
  2. var fs = require('fs');
  3. var request = require('request');
  4. var cheerio = require('cheerio');
  5. var async = require('async');
  6. var csvjson = require('csvjson');
  7. var diacritics = require('diacritic');
  8. var stringify = require('querystring').stringify;
  9.  
  10. var url = "http://www.meilleursagents.com";
  11.  
  12. var app = express();
  13.  
  14. //Cookies are disabled by default
  15. //request = request.defaults({jar: true});
  16.  
  17. var form = {
  18.     url: '',
  19.     action:'signin',
  20.     user_username: "bob@ledur.fr",
  21.     user_password: "ledur"
  22. };
  23.  
  24. var conf = {
  25.     'url': url,
  26.     'jar': request.jar(),
  27.     'headers': {
  28.         'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"
  29.     }
  30. };
  31.  
  32. var options = {
  33.     'uri': url + '/signin?show=signin',
  34.     'jar': conf.jar,
  35.     'form': form
  36. };
  37.  
  38. // 3 - callback pour confirmer que je suis toujours login
  39. function verifLogin(err, res, body) {
  40.     if (err) return console.log("ERROR:", err);
  41.     var $ = cheerio.load(body);
  42.     console.log($('a[href="/my/"]').text());
  43.     start();
  44. }
  45.  
  46. var base;
  47.  
  48. //start();
  49. connect();
  50.  
  51. function connect() {
  52.     request.post(options, function (err, res, body) {
  53.         if (err) {
  54.             console
  55.             .log(err);
  56.         } else {
  57.             request.get(conf, verifLogin);
  58.         }
  59.     });
  60. }
  61.  
  62. function start() {
  63.     csvjson.toSchemaObject('./fake_ads_samples.csv').save('./fake_ads_samples.json');
  64.     base = JSON.parse(fs.readFileSync('./fake_ads_samples.json', 'utf8'));
  65.     getSqMeterPrices(base);
  66.     // console.log(base);
  67. }
  68.  
  69. function getSqMeterPrices(base) {
  70.     async.eachSeries(base, function (item, callback) {
  71.         if (item.chk == "true") {
  72.             return callback();
  73.         }
  74.         var u = url + "/prix-immobilier/" + diacritics.clean(item.city.name.toLowerCase().replace(/\s/g, '-')) + '-' + item.city.postalCode + '/';
  75.         console.log(u);
  76.         request.get({url: u, jar: conf.jar, headers: conf.headers}, function (err, res, body) {
  77.             var $ = cheerio.load(body);
  78.             // console.log($('a[href="/my/"]').text());
  79.             // console.log($('title').text());
  80.             // console.log(res.request.headers);
  81.             var statusCodeArr = [200, 404];
  82.             if (err || statusCodeArr.indexOf(res.statusCode) == -1) {
  83.                 return console.log(err, res.statusCode);
  84.             } else {
  85.                 $('li.price_house').each(function (i, element) {
  86.                     var low = $(this).next();
  87.                     var avg = $(this).next().next();
  88.                     var high = $(this).next().next().next();
  89.                     console.log('house,' + item.city.name + ',' + low.text().clear() + ',' + avg.text().clear() + ',' + high.text().clear());
  90.                 });
  91.                 $('li.price_apartment').each(function (i, element) {
  92.                     var low = $(this).next();
  93.                     var avg = $(this).next().next();
  94.                     var high = $(this).next().next().next();
  95.                     console.log('apt,' + item.city.name + ',' + low.text().clear() + ',' + avg.text().clear() + ',' + high.text().clear());
  96.                 });
  97.             }
  98.             callback();
  99.         });
  100.     }, function (err) {
  101.         if (err) {
  102.             console.log(err);
  103.         } else {
  104.             console.log('Grab Done!');
  105.         }
  106.     });
  107. }
  108.  
  109. String.prototype.clear = function () {
  110.     return this.replace(/[\sā‚¬]/g, '');
  111. };
  112.  
  113. module.exports = app;
  114.  
  115. var server = app.listen(3333, function() {
  116.   console.log('Express server listening on port ' + server.address().port);
  117. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement