UNPKG

egypt-banks-scraper

Version:
58 lines (50 loc) 1.6 kB
const path = require('path'); const env = require('node-env-file'); env(path.join(`${__dirname}../../../.env`)); export default class Bank { /** * @param {Object} bankName names of the bank acronym, english, * arabic, etc * @param {String} url of the bank exchange rates web page */ constructor(bankName, bankURL, selector) { 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 */ async 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 * } * ] */ let rates = null; try { const page = await browser.newPage(); await page.setDefaultNavigationTimeout(process.env.timeout); await page.goto(this.url); await page.waitForSelector(this.selector); const bodyHandle = await page.$('body'); const html = await page.evaluate(body => body.innerHTML, bodyHandle); rates = this.scraper(html); return (rates); } catch (e) { console.log(this.url, '\nerror on get page by puppeteer:', e); return []; } } }