hammer-scrape
Version:
Unifies Cheerio and Puppeteer for the most streamline scraping experience
59 lines • 2.42 kB
JavaScript
;
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