Advertisement
Guest User

Untitled

a guest
Jan 19th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. 'use strict';
  2. const request = require('request');
  3. const cheerio = require('cheerio');
  4. const _ = require('lodash');
  5. const mysql = require('mysql');
  6. const logger = require('winston');
  7. var urlPattern = 'http://www.mejoratuescuela.org/escuelas/index/';
  8. var connection = mysql.createConnection({
  9. host: process.env.HOST,
  10. user: process.env.USER,
  11. port: process.env.PORT,
  12. password: process.env.PASSWORD,
  13. database: process.env.DATABASE
  14. });
  15.  
  16. connection.connect();
  17.  
  18. function getGeneralData(data) {
  19. var dataObj = {};
  20. dataObj.clave = cheerio(data[0]).text().split(':')[1];
  21. dataObj.level = cheerio(data[1]).text().split(':')[1];
  22. dataObj.schedule = cheerio(data[2]).text().split(':')[1];
  23. dataObj.category = cheerio(data[3]).text();
  24. dataObj.phones = cheerio(data[4]).text().split(':')[1];
  25. return dataObj;
  26. }
  27.  
  28. function getAddressData(data) {
  29. var dataObj = {};
  30. dataObj.address = cheerio(data[0]).text().split(':')[1];
  31. dataObj.city= cheerio(data[1]).text().split(':')[1];
  32. dataObj.town= cheerio(data[2]).text().split(':')[1];
  33. dataObj.state= cheerio(data[3]).text().split(':')[1];
  34. return dataObj;
  35. }
  36.  
  37. function getStatsData(data) {
  38. var dataObj = {};
  39. dataObj.studentsCount = Number(data.eq(0).text());
  40. dataObj.employeesCount = Number(data.eq(1).text());
  41. dataObj.groupsCount = Number(data.eq(2).text());
  42. return dataObj;
  43. }
  44.  
  45. function scrap(clave) {
  46. request(`${urlPattern}${clave}`, function(err,response,html){
  47.  
  48. if (err) {
  49. logger.error(err);
  50. return;
  51. }
  52. if (response.statusCode !== 200) {
  53. var debug = response.statusCode == 404 ? {} : {body: response.body, headers: response.headers};
  54. logger.warn(`Got status code ${response.statusCode} while searching for school ${clave}`, debug);
  55. return;
  56. }
  57. var $ = cheerio.load(html);
  58. console.log(getGeneralData($('.info .block li')));
  59. console.log(getAddressData($('.address div[flex] li')));
  60. console.log(getStatsData($('.h3-num-datos')));
  61. });
  62. }
  63.  
  64. var q = connection.query('SELECT id, CLAVE_CT, NOMBRECT FROM escuelasAll');
  65. q.
  66. on('error', function (err) {
  67. console.log(err);
  68. })
  69. .on('result', function (row) {
  70. scrap(row.CLAVE_CT);
  71. })
  72. .on('end', function () {
  73. console.log('Stream ended');
  74. connection.end();
  75. });
  76.  
  77. error: Error: connect EMFILE 192.237.193.131:80 - Local (undefined:undefined)
  78. at Object.exports._errnoException (util.js:874:11)
  79. at exports._exceptionWithHostPort (util.js:897:20)
  80. at connect (net.js:841:14)
  81. at net.js:984:7
  82. at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:63:16)
  83. at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:82:10)
  84. error: Error: connect EMFILE 192.237.193.131:80 - Local (undefined:undefined)
  85. at Object.exports._errnoException (util.js:874:11)
  86. at exports._exceptionWithHostPort (util.js:897:20)
  87. at connect (net.js:841:14)
  88. at net.js:984:7
  89. at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:63:16)
  90. at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:82:10)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement