How can I disable images or CSS styles in Puppeteer to improve performance?
Ava W
ava w profile pic

To disable images or CSS styles in Puppeteer and improve performance, you can utilize a combination of techniques such as blocking resource types and injecting CSS overrides. Here's a detailed explanation of how to disable images or CSS styles: 1. Launching a new browser instance and creating a new page:

1
2
3
4
5
6
7
8
9
10
11
12
13

   const puppeteer = require('puppeteer');

   (async () => {
     const browser = await puppeteer.launch();
     const page = await browser.newPage();

     // Perform actions with the page here

     // Close the browser
     await browser.close();
   })();
   

This code sets up a basic Puppeteer script. It launches a new headless browser instance and creates a new page to work with. 2. Disabling images: To disable loading of images, you can use therequest.intercept() method to intercept image requests and prevent them from being loaded. This technique reduces network requests and improves performance.

1
2
3
4
5
6
7
8
9
10
11

   await page.setRequestInterception(true);

   page.on('request', (request) => {
     if (request.resourceType() === 'image') {
       request.abort();
     } else {
       request.continue();
     }
   });
   

In this code snippet,setRequestInterception(true) is used to enable request interception on the page. Then, the'request' event is registered to intercept all requests. If theresourceType() of a request is'image', the request is aborted, preventing the image from being loaded. Otherwise, the request is continued. 3. Disabling CSS styles: To disable CSS styles, you can inject CSS overrides into the page usingpage.addStyleTag(). This technique allows you to selectively disable or modify specific styles or override all styles on the page.

1
2
3

   await page.addStyleTag({ content: 'body { visibility: hidden !important; }' });
   

In this example, theaddStyleTag() method is used to inject CSS overrides that hide the entirebody element by setting its visibility tohidden. This effectively disables the visibility of all elements on the page. 4. Verifying the changes: To confirm that images are disabled or CSS styles are overridden, you can navigate to a page that contains images or styles and observe the behavior:

1
2
3
4
5
6

   await page.goto('https://example.com');

   // Verify if images are loaded or styles are applied correctly
   // Perform other actions as needed
   

In this example, the page navigates tohttps://example.com, and you can perform additional actions to verify the changes, such as inspecting the page visually or checking network requests. By following these steps, you can disable images or CSS styles in Puppeteer to improve performance. Disabling images reduces network requests and page load time, while overriding CSS styles allows you to control the rendering of elements on the page. These techniques are useful for performance testing, web scraping, or other scenarios where resource loading or visual appearance may not be necessary.