Skip to main content
Version: 3.6

快速开始

通过这个简短的教程,你可以在一两分钟内开始使用Crawlee进行爬取。要深入了解Crawlee的工作原理,请阅读介绍,这是一个全面的逐步指南,可帮助你创建第一个爬虫。

选择你的网络爬虫

Crawlee有三个主要的爬虫类:CheerioCrawlerPuppeteerCrawlerPlaywrightCrawler。所有这些类都共享相同的接口,以便在它们之间进行灵活切换。

CheerioCrawler

这是一个普通的HTTP爬虫。它使用Cheerio库解析HTML,并使用专门的got-scraping HTTP客户端来爬取网络,该客户端伪装成浏览器。它非常快速和高效,但无法处理JavaScript渲染。

PuppeteerCrawler

这个爬虫使用无头浏览器进行抓取,由Puppeteer库控制。它可以控制Chromium或Chrome。Puppeteer是无头浏览器已被实践过的自动化标准。

PlaywrightCrawler

Playwright 是 Puppeteer 的更强大、功能更齐全的后继者。它可以控制 Chromium、Chrome、Firefox、Webkit 和许多其他浏览器。如果你还不熟悉 Puppeteer,并且需要一个无头浏览器,那就选择 Playwright 吧。

在开始之前,请注意

Crawlee 需要 Node.js 16 或更高版本

使用Crawlee CLI进行安装

尝试Crawlee的最快方式是使用Crawlee CLI并选择入门示例。 CLI将安装所有必要的依赖项,并为你添加样板代码以供你使用。

npx crawlee create my-crawler

安装完成后,你可以这样启动爬虫:

cd my-crawler && npm start

手动安装

你可以通过运行以下命令将Crawlee添加到任何Node.js项目中:

npm install crawlee

开始爬取

运行以下示例,使用所选的爬虫执行Crawlee网站的递归抓取。

不要忘记模块导入

To run the example, add a "type": "module" clause into your package.json or copy it into a file with an .mjs suffix. This enables import statements in Node.js. See

要运行示例,请在你的package.json中添加一个"type": "module",或将其复制到具有.mjs后缀的文件中。这样可以在Node.js中启用import语句。请参见

Node.js 文档

获取更多信息。

Run on
import { CheerioCrawler, Dataset } from 'crawlee';

// CheerioCrawler使用HTTP请求来爬取网络。
// 并使用Cheerio库解析HTML。
const crawler = new CheerioCrawler({
// 使用requestHandler来处理抓取的每个页面。
async requestHandler({ request, $, enqueueLinks, log }) {
const title = $('title').text();
log.info(`Title of ${request.loadedUrl} is '${title}'`);

// 将结果保存为 JSON 到 ./storage/datasets/default
await Dataset.pushData({ title, url: request.loadedUrl });

// 从当前页面提取链接
// 并将它们添加到爬取队列中。
await enqueueLinks();
},

// 让我们限制爬取的范围,以缩短测试时间并提高安全性。
maxRequestsPerCrawl: 50,
});

// 将第一个URL添加到队列中并开始爬取。
await crawler.run(['https://crawlee.dev']);

当你运行示例时,你将在终端中看到Crawlee自动化数据提取过程。

INFO  CheerioCrawler: Starting the crawl
INFO CheerioCrawler: Title of https://crawlee.dev/ is 'Crawlee · Build reliable crawlers. Fast. | Crawlee'
INFO CheerioCrawler: Title of https://crawlee.dev/docs/examples is 'Examples | Crawlee'
INFO CheerioCrawler: Title of https://crawlee.dev/docs/quick-start is 'Quick Start | Crawlee'
INFO CheerioCrawler: Title of https://crawlee.dev/docs/guides is 'Guides | Crawlee'

完整浏览器运行

Puppeteer和Playwright控制的浏览器以无头模式运行(没有可见窗口)。当你想要查看浏览器中发生了什么时,你可以通过在爬虫构造函数中添加headless: false选项来切换到有头模式。这在开发阶段很有用。

Run on
import { PlaywrightCrawler, Dataset } from 'crawlee';

const crawler = new PlaywrightCrawler({
async requestHandler({ request, page, enqueueLinks, log }) {
const title = await page.title();
log.info(`Title of ${request.loadedUrl} is '${title}'`);
await Dataset.pushData({ title, url: request.loadedUrl });
await enqueueLinks();
},
// 当你关闭无头模式时,爬虫将在可见的浏览器窗口中运行。
headless: false,

// 让我们限制爬取的范围,以缩短测试时间并提高安全性。
maxRequestsPerCrawl: 50,
});

// 将第一个URL添加到队列中并开始爬取。
await crawler.run(['https://crawlee.dev']);

当你运行示例代码时,你将看到一个自动化浏览器在Crawlee网站上快速浏览。

note

为了展示,我们已经减慢了爬虫的速度,但请放心,在实际使用中它运行得非常快。

An image showing off Crawlee scraping the Crawlee website using Puppeteer/Playwright and ChromiumAn image showing off Crawlee scraping the Crawlee website using Puppeteer/Playwright and Chromium

运行结果

Crawlee将数据存储到你当前工作目录中的./storage目录。 你爬取的结果将以JSON文件形式在./storage/datasets/default/*.json下可用。

./storage/datasets/default/000000001.json
{
"url": "https://crawlee.dev/",
"title": "Crawlee · The scalable web crawling, scraping and automation library for JavaScript/Node.js | Crawlee"
}
tip

你可以通过设置CRAWLEE_STORAGE_DIR环境变量来覆盖存储目录。

例子和进一步阅读

你可以在文档的示例部分找到更多展示Crawlee各种功能的例子。要更好地理解Crawlee及其组件,你应该逐步阅读介绍指南。

相关链接