Apify/Crawlee 快速入门指南:轻松构建高效爬虫

Apify/Crawlee 快速入门指南:轻松构建高效爬虫

crawlee Crawlee—A web scraping and browser automation library for Node.js that helps you build reliable crawlers. Fast. crawlee 项目地址: https://gitcode.com/gh_mirrors/cr/crawlee

前言

在当今数据驱动的时代,网络爬虫已成为获取互联网信息的重要工具。Apify/Crawlee 是一个强大的 Node.js 爬虫框架,它简化了爬虫开发流程,让开发者能够快速构建高效、可靠的网络爬虫。本文将带你快速上手 Crawlee,了解其核心功能和基本使用方法。

环境准备

在开始之前,请确保你的开发环境满足以下要求:

  • Node.js 16 或更高版本
  • npm 或 yarn 包管理器

Crawlee 三大核心爬虫类

Crawlee 提供了三种主要的爬虫类,每种都针对不同的使用场景进行了优化:

1. CheerioCrawler

特点

  • 基于纯 HTTP 请求
  • 使用 Cheerio 库解析 HTML
  • 采用 got-scraping HTTP 客户端模拟浏览器行为
  • 执行速度快、资源消耗低
  • 不支持 JavaScript 渲染的页面

适用场景:静态网页抓取,对性能要求高的简单爬取任务

2. PuppeteerCrawler

特点

  • 基于 Puppeteer 库
  • 控制 Chromium 或 Chrome 浏览器
  • 支持 JavaScript 渲染的页面
  • 行业标准的无头浏览器自动化工具

适用场景:需要处理动态内容的复杂网页

3. PlaywrightCrawler

特点

  • 基于 Playwright 库
  • 支持多种浏览器(Chromium、Firefox、Webkit 等)
  • 功能更强大,API 更丰富
  • Puppeteer 的进化版本

适用场景:跨浏览器测试和复杂网页抓取

快速安装指南

方法一:使用 Crawlee CLI(推荐)

对于初学者,使用 CLI 工具是最快捷的方式:

npx crawlee create my-crawler

创建完成后,进入项目目录并启动:

cd my-crawler && npm start

方法二:手动安装

根据你的需求选择安装对应的爬虫类型:

CheerioCrawler(基础安装)
npm install crawlee
PlaywrightCrawler(需要额外安装)
npm install crawlee playwright
PuppeteerCrawler(需要额外安装)
npm install crawlee puppeteer

编写第一个爬虫

下面我们以 CheerioCrawler 为例,展示一个简单的爬虫实现:

import { CheerioCrawler } from 'crawlee';

const crawler = new CheerioCrawler({
    async requestHandler({ request, $ }) {
        console.log(`Processing: ${request.url}`);
        
        // 提取页面标题
        const title = $('title').text();
        console.log(`Title: ${title}`);
        
        // 保存结果
        await Dataset.pushData({
            url: request.url,
            title,
        });
    },
});

// 启动爬虫
await crawler.run(['https://crawlee.dev']);

代码解析

  1. 导入 CheerioCrawler 类
  2. 创建 crawler 实例,配置 requestHandler
  3. 在 requestHandler 中:
    • 使用 $(Cheerio 对象)解析 HTML
    • 提取页面标题
    • 将结果保存到数据集
  4. 调用 crawler.run() 启动爬取

可视化调试(无头浏览器模式)

对于 Puppeteer 和 Playwright 爬虫,你可以启用可视化模式进行调试:

import { PlaywrightCrawler } from 'crawlee';

const crawler = new PlaywrightCrawler({
    // 启用可视化浏览器窗口
    launchContext: {
        launchOptions: {
            headless: false,
        },
    },
    // 减慢执行速度便于观察
    maxRequestConcurrency: 1,
    requestHandlerTimeoutSecs: 30,
    
    async requestHandler({ page }) {
        // 页面操作代码...
    },
});

数据存储与管理

Crawlee 自动将爬取结果存储在项目目录下的 ./storage 文件夹中:

  • 数据集存储在 ./storage/datasets/default/ 目录下
  • 每个结果保存为独立的 JSON 文件
  • 可以通过环境变量 CRAWLEE_STORAGE_DIR 修改存储路径

最佳实践建议

  1. 开发阶段:使用可视化模式调试爬虫
  2. 生产环境:切换回无头模式提高性能
  3. 错误处理:为爬虫添加适当的错误处理逻辑
  4. 速率控制:合理设置请求间隔,避免被封禁
  5. 结果验证:定期检查存储的数据质量

进阶学习方向

掌握了基础用法后,你可以进一步探索:

  • 请求队列管理
  • 代理配置
  • 分布式爬取
  • 自定义存储后端
  • 高级选择器技巧

通过本文,你已经了解了 Crawlee 的基本使用方法。这个强大的框架能够帮助你快速构建各种复杂的爬虫应用,无论是简单的数据采集还是复杂的自动化任务,Crawlee 都能提供可靠的解决方案。

crawlee Crawlee—A web scraping and browser automation library for Node.js that helps you build reliable crawlers. Fast. crawlee 项目地址: https://gitcode.com/gh_mirrors/cr/crawlee

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞿凌骊Natalie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值