パッケージの詳細

puppeteer-autoscroll-down

mbalabash20.7kMIT2.0.0

Handle infinite scroll on websites with puppeteer

headless-chrome, puppeteer, parsing, infinite

readme

Handle infinite scroll on websites with puppeteer

Small puppeteer tool which makes your parsing experience a little bit better

Usage

size - Number of pixels to scroll on each step [default: 250]

delay - Delay in ms after each completed scroll step [default: 100]

stepsLimit - Max number of steps to scroll [default: null]

const puppeteer = require('puppeteer')
const { scrollPageToBottom } = require('puppeteer-autoscroll-down')

const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('http://example.com')

const lastPosition = await scrollPageToBottom(page, {
  size: 500,
  delay: 250
})

await browser.close()

Async content loading

You can use returned value with request/response hooks to handle async content loading

const puppeteer = require('puppeteer')
const { scrollPageToBottom } = require('puppeteer-autoscroll-down')

const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('http://example.com')

let isLoadingAvailable = true // Your condition-to-stop

while (isLoadingAvailable) {
  await scrollPageToBottom(page, { size: 500 })
  await page.waitForResponse(
    response => response.url() === 'http://example.com' && response.status() === 200
  )
  isLoadingAvailable = false // Update your condition-to-stop value
}

await browser.close()

Not only scroll to the bottom, but there is also function for scroll to the top

scrollPageToTop supports same API as scrollPageToBottom

const puppeteer = require('puppeteer')
const { scrollPageToTop } = require('puppeteer-autoscroll-down')

const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('http://example.com')

const lastPosition = await scrollPageToTop(page, {
  size: 500,
  delay: 250
})

await browser.close()

Install

npm i puppeteer-autoscroll-down

or

yarn add puppeteer-autoscroll-down

License

MIT

更新履歴

Change Log

This project adheres to Semantic Versioning.

2.0.0

  • Dropped support for CommonJS
  • Fixed type compatibility issue between puppeteer-core and puppeteer.
  • Upgraded devDependencies.

1.1.2

  • Upgraded devDependencies.

1.1.1

  • Upgraded project packages.
  • Fixed npm security alert.

1.1.0

  • Added scrollPageToTop.

1.0.0

  • Moved to named export. Use const { scrollPageToBottom } = require('puppeteer-autoscroll-down').

  • Renamed and moved options to object. Use scrollPageToBottom(page, { size: 500, delay: 250, stepsLimit: 10 }).

0.2.0

  • Added scrollStepsLimit option, which allows you to control how many scrolls you want to make (for cases when you want to parse only recent information).
  • Fixed npm security alert. Upgraded project packages.

0.1.7

  • Fixed npm security alert. Upgraded project packages.

0.1.6

  • Fixed npm security alert. Upgraded project packages.

0.1.5

0.1.4

  • Fixed npm security alert. Upgraded vulnerable packages.

0.1.3

  • Fixed npm security alert. Upgraded vulnerable packages.

0.1.2

  • Fixed npm security alert. Upgraded vulnerable packages.

0.1.1

  • Added MIT license.

0.1.0

  • Initial release.