UNPKG

source-scraper-puppeteer-runner

Version:

Provides the PuppeteerRunner class for scrapping.

57 lines 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const source_scraper_core_1 = require("source-scraper-core"); const puppeteer_1 = require("puppeteer"); class PuppeteerRunner extends source_scraper_core_1.Runner { constructor() { super(...arguments); this.defaultOptions = { puppeteerConfig: { headless: true }, requestInterceptors: [ ({ resourceType }) => resourceType === 'font' ] }; } async exec(url, scraper, options) { const { puppeteerConfig, requestInterceptors, init, navigationOptions } = options; const browser = await puppeteer_1.launch(puppeteerConfig); const page = await browser.newPage(); await page.emulateMedia('screen'); const requestInterceptionEnabled = Array.isArray(requestInterceptors) && requestInterceptors.length > 0; await page.setRequestInterception(requestInterceptionEnabled); if (requestInterceptionEnabled) page.on('request', (request) => { const block = requestInterceptors.some(e => e({ browser, page, request, resourceType: request.resourceType(), url: request.url() })); if (block) request.abort(); else request.continue(); }); if (typeof init !== 'undefined') init({ browser, page }); await page.goto(url, navigationOptions); try { return await scraper({ url, browser, page }); } finally { await browser.close(); } } } exports.PuppeteerRunner = PuppeteerRunner; //# sourceMappingURL=PuppeteerRunner.js.map