
Crawlee 入门指南Node.js 网页爬虫 5 分钟从零到上线【免费下载链接】crawleeCrawlee—A web scraping and browser automation library for Node.js to build reliable crawlers. In JavaScript and TypeScript. Extract data for AI, LLMs, RAG, or GPTs. Download HTML, PDF, JPG, PNG, and other files from websites. Works with Puppeteer, Playwright, Cheerio, JSDOM, and raw HTTP. Both headful and headless mode. With proxy rotation.项目地址: https://gitcode.com/GitHub_Trending/cr/crawleeCrawlee 是一个面向 Node.js 的网页抓取与浏览器自动化库同时支持 JavaScript 和 TypeScript。这篇入门指南先帮你判断它是否匹配当前场景再 5 分钟跑通第一个爬虫最后覆盖递归爬取、数据导出和反屏蔽等生产配置读完即可独立搭一个能稳定运行的抓取项目。先搞清楚 Crawlee 适合你的抓取场景吗三个核心卖点三类爬虫共用同一套接口。CheerioCrawler、PlaywrightCrawler、PuppeteerCrawler的参数和requestHandler写法一致页面从静态变动态时换一行 import 就能切换。存储是内置的。抓取结果进 Dataset类表结构、文件进 KeyValueStore、去重队列进 RequestQueue不用自己写落盘和去重逻辑。反检测开箱即用。会话池会把 IP、Cookie、浏览器指纹作为一个整体自动轮换默认就带着真实浏览器指纹跑。爬虫渲染能力速度典型用途CheerioCrawler无 JS 渲染⚡ 最快静态页、SSR 站点、API 数据PuppeteerCrawlerChromium 渲染快需要 JS 渲染的单浏览器场景PlaywrightCrawler多浏览器渲染快动态页、需要 Firefox/WebKit 时如果你的任务只是抓几十个纯静态页面任何库都行但一旦涉及链接发现 断点续抓 被风控Crawlee 的内置组件能省掉大量胶水代码。如何最快启动第一个爬虫项目前置检查只有一条Node.js 16 及以上跑一下node -v确认即可。最快的启动方式是用内置 CLI 生成脚手架它会装好依赖并给一份可运行的示例代码npx crawlee create my-crawler cd my-crawler npm start如果想手动集成到已有项目按爬虫类型安装npm install crawlee # 只用 CheerioCrawler npm install crawlee playwright # 需要浏览器渲染时 npm install crawlee puppeteer # 同上换 Puppeteer跑通后的最小抓取逻辑长这样10 行以内就能取标题并落盘import { CheerioCrawler, Dataset } from crawlee; const crawler new CheerioCrawler({ async requestHandler({ $, request }) { const title $(title).text(); await Dataset.pushData({ title, url: request.url }); }, maxRequestsPerCrawl: 50, }); await crawler.run([https://crawlee.dev]);官方文档docs/quick-start/index.mdx如何完成三个高频抓取任务如何递归爬取整站且不重复抓不想手动维护 URL 列表时用enqueueLinks()从当前页提取链接入队RequestQueue会自动去重默认只收同子域名下的链接const crawler new PlaywrightCrawler({ async requestHandler({ enqueueLinks }) { await enqueueLinks({ selector: a[href*/docs/] }); }, }); await crawler.run([https://crawlee.dev]);断网重跑时已抓过的 URL 不会重复处理这就是断点续抓。如何保存数据并导出成 CSV 或 JSON每条记录用Dataset.pushData()追加结束后可以一键导出import { Dataset } from crawlee; await Dataset.pushData({ title: Home, url: https://crawlee.dev }); await Dataset.exportToCSV(results); await Dataset.exportToJSON(results);数据默认存在./storage/datasets/default/下可用环境变量CRAWLEE_STORAGE_DIR改路径。详细说明见 docs/guides/result_storage.mdx。如何批量下载 PDF 和图片专门有个FileDownload爬虫类负责二进制文件下载内容写进 KeyValueStoreimport { FileDownload } from crawlee; const downloader new FileDownload({ async requestHandler({ request, response, contentType, getKeyValueStore }) { const kvs await getKeyValueStore(); await kvs.setValue(new URL(request.url).pathname, response.body, { contentType: contentType.type, }); }, }); await downloader.run([https://pdfobject.com/pdf/sample.pdf]);文件会落在./storage/key_value_stores/default/里。从 Demo 走向生产要配哪几项把散落的稳定性配置按问题→配置整理成一张表照着对号入座即可遇到的情况对应配置偶发请求失败需要自动补抓maxRequestRetries: 3抓太快触发站点限流minConcurrency: 1, maxConcurrency: 10出口 IP 被目标站封禁proxyConfiguration配置代理池轮换开发阶段想看浏览器在干嘛headless: false担心被浏览器指纹识别不用配会话池默认随 session 轮换指纹部署方面仓库提供了 Docker 镜像说明和云平台部署文档浏览器类爬虫上云时选带浏览器环境的镜像即可参考 docs/guides/docker_images.mdx。反屏蔽的完整策略含指纹定制在 docs/guides/avoid_blocking.mdx。新手最容易踩的三个坑现象import语句直接报语法错误。原因你的package.json没启用 ES 模块。 解决加一行type: module或者把脚本命名为.mjs。现象代码写着 PlaywrightCrawler运行却报找不到 playwright。原因浏览器库不随crawlee一起安装这是刻意的设计为了减小体积。 解决npm install crawlee playwright或 puppeteer显式装上。现象爬虫跑完了却在项目目录里找不到结果。原因结果不在代码旁边而在./storage/datasets/default/且被CRAWLEE_STORAGE_DIR覆盖时位置会变。 解决先查环境变量再看该目录截图、下载文件则去key_value_stores目录找。把选型、抓取、落盘、反检测这几块对上号你的第一个生产级爬虫就有了。更多示例和逐步讲解可以从 docs/examples/ 与 docs/introduction/01-setting-up.mdx 继续看。【免费下载链接】crawleeCrawlee—A web scraping and browser automation library for Node.js to build reliable crawlers. In JavaScript and TypeScript. Extract data for AI, LLMs, RAG, or GPTs. Download HTML, PDF, JPG, PNG, and other files from websites. Works with Puppeteer, Playwright, Cheerio, JSDOM, and raw HTTP. Both headful and headless mode. With proxy rotation.项目地址: https://gitcode.com/GitHub_Trending/cr/crawlee创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考