Capturing Screenshots with Puppeteer in Node.js: A Step-by-Step Guide

Mon 7 Aug 2023

Puppeteer is a powerful Node.js library developed by Google that allows developers to control headless Chrome or Chromium browsers. With Puppeteer, you can automate various browser tasks, such as navigating web pages, scraping data, and capturing screenshots. In this tutorial, we will walk you through the process of using Puppeteer to capture screenshots in Node.js, providing you with the knowledge and tools to enhance your web automation projects.

Step 1: Set Up Your Node.js Project

First, ensure you have Node.js installed on your system. Create a new Node.js project or use an existing one by running npm init in your terminal and installing Puppeteer with npm install puppeteer.

Step 2: Import Puppeteer and Create a Browser Instance

Require Puppeteer in your Node.js script and create a browser instance using the puppeteer.launch() method.

const puppeteer = require("puppeteer");

(async () => {
  const browser = await puppeteer.launch();
  // Rest of the code goes here
})();

Step 3: Open a New Page and Navigate to Your Target Website

Create a new page in the browser and use the page.goto() method to navigate to the URL you want to capture.

const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.example.com');
// Rest of the code goes here
})();

Step 4: Configure the Screenshot Options

Before capturing the screenshot, you can customize its size, quality, and format by using the page.setViewport() method and other available options.

const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.example.com');

// Set screenshot options
await page.setViewport({ width: 1200, height: 800 });
// Rest of the code goes here
})();

Step 5: Capture the Screenshot

Finally, use the page.screenshot() method to capture the screenshot and save it to a file or buffer.

const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.example.com');

await page.setViewport({ width: 1200, height: 800 });

// Capture the screenshot and save it to a file
await page.screenshot({ path: 'screenshot.png' });

// Alternatively, capture the screenshot as a buffer
// const screenshotBuffer = await page.screenshot();

await browser.close();
})();

Congratulations! You've learned how to use Puppeteer in Node.js to automate the process of capturing screenshots from web pages. This versatile library opens up endless possibilities for browser automation, automated testing, and data visualization. By harnessing Puppeteer's capabilities, you can streamline your web development workflow and create more efficient, robust applications. So go ahead and experiment with Puppeteer, and unlock the full potential of browser automation in your Node.js projects! Happy coding!

If you want to do the same without the hazzle of setting up your own infrastructure or maintaining your codebase, you can use our Screenshot API to capture screenshots in a few lines of code and guarantee 99.99% uptime.