/website-scraper-puppeteer

Plugin for website-scraper which returns html for dynamic websites using puppeteer

Primary LanguageJavaScriptMIT LicenseMIT

Version Downloads Build Status

website-scraper-puppeteer

Plugin for website-scraper which returns html for dynamic websites using puppeteer

Requirements

  • nodejs version >= 8
  • website-scraper version >= 4

Installation

npm install website-scraper website-scraper-puppeteer

Usage

const scrape = require('website-scraper');
const PuppeteerPlugin = require('website-scraper-puppeteer');

scrape({
    urls: ['https://www.instagram.com/gopro/'],
    directory: '/path/to/save',
    plugins: [ 
      new PuppeteerPlugin({
        launchOptions: { headless: false }, /* optional */
        scrollToBottom: { timeout: 10000, viewportN: 10 } /* optional */
      })
    ]
});

Puppeteer plugin constructor accepts next params:

  • launchOptions - (optional) - puppeteer launch options, can be found in puppeteer docs
  • scrollToBottom - (optional) - in some cases, the page needs to be scrolled down to render its assets (lazyloading). Because some pages can be really endless, the scrolldown process can be interrupted before reaching the bottom when one or both of the bellow limitations are reached :
    • timeout - in milliseconds
    • viewportN - viewport height multiplier

How it works

It starts Chromium in headless mode which just opens page and waits until page is loaded. It is far from ideal because probably you need to wait until some resource is loaded or click some button or log in. Currently this module doesn't support such functionality.