Crawlee 覆盖你从端到端的爬取和抓取流程,帮助你快速构建可靠的爬虫。
即使使用默认配置,你的爬虫也会表现得像人类一样,并能避开现代机器人防护的检测。Crawlee 为你提供工具来爬取网页中的链接、抓取数据,并将其存储到磁盘或云端,同时保持可配置性以满足你项目的需求。
Crawlee 以 crawlee NPM 包的形式提供。
👉 在 Crawlee 项目网站 上查看完整文档、指南和示例 👈
你更喜欢 🐍 Python 而不是 JavaScript?👉 查看 Crawlee for Python 👈。
我们建议访问 Crawlee 文档中的入门教程以获取更多信息。
Crawlee 需要 Node.js 22.13 或更高版本。
尝试 Crawlee 最快的方法是使用 Crawlee CLI 并选择 Getting started example。CLI 将安装所有必要的依赖项,并添加样板代码供你使用。
npx crawlee create my-crawler
cd my-crawler
npm start
如果你更愿意将 Crawlee 添加到你自己的项目中,请尝试下面的示例。由于它使用 PlaywrightCrawler,我们还需要安装 Playwright。为了减小安装体积,它并未与 Crawlee 捆绑在一起。
npm install crawlee playwright
import { PlaywrightCrawler, Dataset } from 'crawlee';
// PlaywrightCrawler crawls the web using a headless
// browser controlled by the Playwright library.
const crawler = new PlaywrightCrawler({
// Use the requestHandler to process each of the crawled pages.
async requestHandler({ request, page, enqueueLinks, log }) {
const title = await page.title();
log.info(`Title of ${request.loadedUrl} is '${title}'`);
// Save results as JSON to ./storage/datasets/default
await Dataset.pushData({ title, url: request.loadedUrl });
// Extract links from the current page
// and add them to the crawling queue.
await enqueueLinks();
},
// Uncomment this option to see the browser window.
// headless: false,
});
// Add first URL to the queue and start the crawl.
await crawler.run(['https://crawlee.dev']);
默认情况下,Crawlee 会将数据存储到当前工作目录下的 ./storage。你可以通过 Crawlee 配置覆盖此目录。有关详细信息,请参阅配置指南、请求存储和结果存储。
我们为 Crawlee 中每一次合并的代码更改提供自动化 beta 构建。你可以在 npm 的发布列表中找到它们。如果你想在我们发布新功能或错误修复之前进行测试,请随意安装 beta 构建,如下所示:
npm install crawlee@next
如果你还使用 Apify SDK,则需要在 package.json 文件中指定依赖覆盖,以免最终安装多个版本的 Crawlee:
{
"overrides": {
"apify": {
"@crawlee/core": "$crawlee",
"@crawlee/types": "$crawlee",
"@crawlee/utils": "$crawlee"
}
}
}
Crawlee 是开源的,可以在任何地方运行,但由于它由 Apify 开发,因此在 Apify 平台上设置并在云端运行非常容易。访问 Apify SDK 网站以了解有关将 Crawlee 部署到 Apify 平台的更多信息。
如果你发现 Crawlee 有任何错误或问题,请在 GitHub 上提交 issue。如有疑问,你可以在 Stack Overflow、GitHub Discussions 上提问,或者加入我们的 Discord 服务器。
欢迎你的代码贡献,你将受到永恒的赞美!如果你有任何改进想法,请提交 issue 或创建 pull request。有关贡献指南和行为准则,请参阅 CONTRIBUTING.md。
本项目根据 Apache License 2.0 许可 - 有关详细信息,请参阅 LICENSE.md 文件。