Headless Chrome 爬虫工具 HCCrawler API 详解

Headless Chrome 爬虫工具 HCCrawler API 详解

headless-chrome-crawler Distributed crawler powered by Headless Chrome headless-chrome-crawler 项目地址: https://gitcode.com/gh_mirrors/he/headless-chrome-crawler

概述

Headless Chrome Crawler (HCCrawler) 是一个基于 Puppeteer 的无头浏览器爬虫框架,提供了强大的网页抓取和数据处理能力。本文将深入解析 HCCrawler 的核心 API,帮助开发者快速掌握这一工具的使用方法。

核心类与方法

HCCrawler 类

HCCrawler 是框架的核心类,提供了启动和连接 Chromium 实例的方法。

基本使用示例
const HCCrawler = require('headless-chrome-crawler');

(async () => {
  const crawler = await HCCrawler.launch({
    evaluatePage: (() => ({
      title: $('title').text(),
    })),
    onSuccess: (result) => {
      console.log(result);
    },
  });
  crawler.queue('https://example.com/');
  await crawler.onIdle();
  await crawler.close();
})();
主要方法
  1. HCCrawler.connect([options])

    • 连接已存在的 Chromium 实例
    • 重要参数:
      • maxConcurrency: 并发页面数(默认10)
      • maxRequest: 最大请求数(0表示无限制)
      • exporter: 结果导出器
      • cache: 缓存实现
  2. HCCrawler.launch([options])

    • 启动新的 Chromium 实例
    • 参数与 connect 方法类似,但增加了 Puppeteer 启动选项
  3. crawler.queue([options])

    • 添加请求到队列
    • 支持多种参数配置:
      • url: 目标URL(必须)
      • maxDepth: 链接跟随深度
      • priority: 请求优先级
      • delay: 请求间隔时间

爬虫控制方法

  1. crawler.pause() 暂停队列处理
  2. crawler.resume() 恢复队列处理
  3. crawler.clearCache() 清除缓存
  4. crawler.close() 关闭浏览器实例
  5. crawler.onIdle() 等待队列空闲

状态查询方法

  1. crawler.isPaused() 检查是否暂停
  2. crawler.queueSize() 获取队列大小
  3. crawler.requestedCount() 获取已请求计数

高级功能

请求生命周期事件

HCCrawler 提供了完整的请求生命周期事件:

crawler.on('requeststarted', (options) => {
  console.log('请求开始:', options.url);
});

crawler.on('requestfinished', (options) => {
  console.log('请求完成:', options.url);
});

crawler.on('requestfailed', (error) => {
  console.error('请求失败:', error.options.url);
});

自定义爬取逻辑

通过 customCrawl 选项可以直接使用 Puppeteer 原生 API:

const crawler = await HCCrawler.launch({
  customCrawl: async (page, crawl) => {
    await page.setViewport({ width: 1920, height: 1080 });
    return crawl();
  }
});

结果导出

HCCrawler 支持多种导出方式:

  1. CSVExporter: CSV格式导出
  2. JSONLineExporter: JSON行格式导出
  3. 自定义导出器(继承 BaseExporter)

最佳实践

  1. 合理设置并发数:根据目标网站承受能力调整 maxConcurrency
  2. 使用缓存:减少重复请求,提高效率
  3. 遵守robots.txt:设置 obeyRobotsTxt 为 true
  4. 错误处理:实现 onError 回调处理异常
  5. 请求优先级:利用 priority 和 depthPriority 优化爬取顺序

常见问题解决方案

  1. 内存泄漏:定期清理缓存,合理设置 maxRequest
  2. 请求失败:调整 retryCount 和 retryDelay
  3. 反爬机制:设置合理的 delay 和 userAgent
  4. 性能优化:禁用不必要的功能如 screenshot 和 jQuery

通过本文的详细解析,开发者可以全面掌握 HCCrawler 的强大功能,构建高效稳定的网页爬虫应用。

headless-chrome-crawler Distributed crawler powered by Headless Chrome headless-chrome-crawler 项目地址: https://gitcode.com/gh_mirrors/he/headless-chrome-crawler

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

羿漪沁Halbert

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

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

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

打赏作者

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

抵扣说明:

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

余额充值