简而言之:Cheerio 是一个轻量级的 HTML 解析器;Puppeteer 则驱动真正的 Chromium 浏览器。当数据已以原始 HTML 形式存在时,使用 Cheerio;当数据由 JavaScript 渲染时,使用 Puppeteer;若遇到 JavaScript 内容繁多的页面,且每次访问需提取大量字段,则将两者结合使用。
如果你正在开发一个 Node.js 爬虫,当目标网站首次停止配合时,通常就会面临“Cheerio 还是 Puppeteer”的选择难题。也许 Cheerio 在 React 页面上返回了空选择器,或者 Puppeteer 在本应只需几毫秒的任务上却占用了大量 CPU 资源。这两个库之所以流行自有其道理,但对于用户交给它们的任务,有一半情况它们都不适用。
Cheerio 是一个具有 jQuery 风格 API 的服务器端 HTML 解析器。Puppeteer 则是无头 Chromium 的控制器。在选择 Cheerio 还是 Puppeteer 时,最清晰的思维模型是将渲染(将 JavaScript 转换为最终的 DOM)与解析(从该 DOM 中提取字段)区分开来。
本指南将介绍每个库的工作原理、各自的适用场景、能够处理大多数真实网站的混合模式、一个可运行的报价抓取示例,以及一旦离开 localhost 环境就必须应对的反机器人现实。




