NEWScrapingAnt MCP for Claude Code, Cursor & Windsurf — try it free →
Skip to main content

16 posts tagged with "puppeteer"

View All Tags

Puppeteer Debugging and Troubleshooting - Best Practices

· 9 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

Puppeteer Debugging and Troubleshooting - Best Practices

Puppeteer is a powerful tool for automating web testing and scraping. However, it is still subject to problems and bugs like any other software.

It's crucial to have a well-thought-out plan for solving issues in place for times like these.

In this post, we'll explore some of the best practices for Puppeteer debugging and troubleshooting with Puppeteer.

Puppeteer vs. Selenium - Which Is Better? + Bonus

· 9 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

Puppeteer Vs. Selenium: Which Is Better?

With the increasing use of the internet worldwide, it is being implemented in all aspects of our daily lives. So using it efficiently and effectively becomes crucial and could be the difference between competitors and businesses. This is where the concept of Web Automation comes in. Today I shall teach you one of the most debated topics of web automation, Puppeteer vs. Selenium.

Let's begin!

How to Get All Text from a Webpage with Puppeteer

· 12 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

How to Get All Text from a Webpage with Puppeteer

Correction (2026-09-28)

The earlier article described DOM Range selection as Ctrl+A/copy-paste and claimed it could recover text from sites using display optimizations. The example performed neither keyboard input nor clipboard copying, and the general recovery claim was unsupported. This refresh compares actual text returned by five methods on a controlled fixture. Code and captured outputs.

For the readable text of an already rendered page, start with page.$eval('body', body => body.innerText). Use textContent when you explicitly want descendant text that can include hidden content and script/style source. If the HTML already contains the data, a converter such as html-to-text can work without a browser.

Those methods produce different outputs. Below, the browser sees three dynamically populated products, while the raw HTTP response contains empty product placeholders. The examples show how that difference affects text extraction, and when to keep structured records instead of flattening the page.

Web Scraping with Deno

· 10 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

Web Scraping with Deno

Dynamic languages are helpful tools for web scraping. Scripting allows users to rapidly tie together complex systems or libraries and express ideas without dealing with memory management or build systems.

JavaScript is the most popularly used dynamic language, operating on every device with a web browser, and Node.js as a JS runtime proved to be a very successful software platform. Due to design mistakes, it became hard to evolve with an existing user base, so Deno was born to resolve all the problems. Let's find out how to scrape the web and dynamic websites with Deno.

Web Scraping with JavaScript and Node.js: A Tested Guide

· 7 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

Web Scraping with Javascript

Updated 2026-10-26

Rewritten for Node.js 22: built-in fetch and ES modules, current Cheerio, jsdom, Axios, Playwright and Puppeteer, and a web scraping API example. The request and SuperAgent sections and an untested Selenium Google search example were removed. Every snippet was run on 2026-10-26 and its output is shown; the code is in the evidence packet.

Node.js is a good fit for web scraping: fetch is built in, the parsers are fast, and the two main headless browser libraries, Playwright and Puppeteer, are JavaScript-first. This guide goes from a one-line request to a page that only renders in a browser, then shows the same job through a web scraping API.