UNPKG

egypt-banks-scraper

Version:
84 lines (67 loc) 2.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var path = require('path'); var env = require('node-env-file'); env(path.join(__dirname + '../../../.env')); var Bank = function () { /** * @param {Object} bankName names of the bank acronym, english, * arabic, etc * @param {String} url of the bank exchange rates web page */ function Bank(bankName, bankURL, selector) { (0, _classCallCheck3.default)(this, Bank); this.name = bankName; this.url = bankURL; this.selector = selector; } /** * Request then pass html to scraper function for scraping * @param {function} finish callback to pass rates to when finish scraping */ (0, _createClass3.default)(Bank, [{ key: 'scrape', value: async function scrape(browser) { /** * [rates description] * @type {Array} rates [ * { * code: USD, //currency iso code * buy: 20.4, * sell: 18.25 * }, * { * code: EUR, * buy: 18, * sell: 16.5 * } * ] */ var rates = null; try { var page = await browser.newPage(); await page.setDefaultNavigationTimeout(process.env.timeout); await page.goto(this.url); await page.waitForSelector(this.selector); var bodyHandle = await page.$('body'); var html = await page.evaluate(function (body) { return body.innerHTML; }, bodyHandle); rates = this.scraper(html); return rates; } catch (e) { console.log(this.url, '\nerror on get page by puppeteer:', e); return []; } } }]); return Bank; }(); exports.default = Bank;