UNPKG

hammer-scrape

Version:

Unifies Cheerio and Puppeteer for the most streamline scraping experience

59 lines 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const web_scraping_engine_1 = require("../web_scraping_engine"); const engine_type_1 = require("../engine_type"); const engine_core_type_1 = require("../engine_core_type"); const puppeteer_parsing_1 = require("../cores/puppeteer_parsing"); const puppeteer_manipulate_1 = require("../cores/puppeteer_manipulate"); const engine_mode_1 = require("../engine_mode"); const engine_errors_1 = require("../engine_errors"); class PuppeteerEngine extends web_scraping_engine_1.WebScrapingEngine { constructor() { super(engine_type_1.default.Fixed, engine_core_type_1.default.Puppeteer); } load() { return new Promise((resolve) => { this.parsingCore = null; this.manipulationCore = null; resolve(); }); } process(url) { if (this.isCorrectEngineMode(engine_mode_1.default.Idling)) { return new Promise(async (resolve) => { this.setEngineMode(engine_mode_1.default.Loading); // define our parsing core let puppeterParsing = new puppeteer_parsing_1.default(url); await puppeterParsing.initialize(); this.parsingCore = puppeterParsing; // define our manipulating core and share our request between these cores let puppeteerManipulating = new puppeteer_manipulate_1.default(url); await puppeteerManipulating.initialize({ sharedRequest: this.parsingCore.getRequest(), }); this.manipulationCore = puppeteerManipulating; this.setEngineMode(engine_mode_1.default.Idling); resolve(); }); } else { throw new engine_errors_1.EngineCannotSwitchModeError(); } } shutoff() { return new Promise(async (resolve) => { if (this.parsingCore !== null) { await this.parsingCore.dispose(); this.parsingCore = null; } if (this.manipulationCore !== null) { await this.manipulationCore.dispose(); this.manipulationCore = null; } resolve(); }); } } exports.PuppeteerEngine = PuppeteerEngine; exports.default = PuppeteerEngine; //# sourceMappingURL=puppeteer_engine.js.map