Heritrix3 爬虫任务配置详解

Heritrix3 爬虫任务配置详解

heritrix3 Heritrix is the Internet Archive's open-source, extensible, web-scale, archival-quality web crawler project. heritrix3 项目地址: https://gitcode.com/gh_mirrors/he/heritrix3

Heritrix3 作为一款专业的网络爬虫框架,其强大的配置系统允许用户精细控制爬取行为。本文将深入解析如何配置 Heritrix3 的爬取任务,帮助开发者掌握核心配置技巧。

基础任务配置

Heritrix3 的任务配置主要通过修改 crawler-beans.cxml 文件实现,该文件采用 Spring 框架的配置方式。

爬取限制设置

通过 CrawlLimitEnforcer 组件可以设置三种关键限制:

  1. 数据量限制 (maxBytesDownload)

    • 设置爬取的总字节数上限
    • 示例:<property name="maxBytesDownload" value="100000000" /> 表示限制为100MB
  2. 文档数量限制 (maxDocumentDownload)

    • 控制爬取的文档总数
    • 示例:<property name="maxDocumentsDownload" value="100" /> 限制100个文档
  3. 时间限制 (maxTimeSeconds)

    • 设定爬取持续时间(秒)
    • 示例:<property name="maxTimeSeconds" value="10000" /> 约2.7小时

注意:这些限制是软性限制,当达到阈值时会触发优雅终止,正在处理的URI仍会完成。

线程数配置

maxToeThreads 参数控制并发线程数:

  • 对于少于100个主机的域爬取,建议设置为主机数的2倍
  • 通常150-200线程足够,除非机器资源特别强大
  • 示例:<property name="maxToeThreads" value="50" />

操作者联系信息

metadata.operatorContactUrl 是重要的礼貌性设置:

  • 提供网站管理员联系渠道
  • 示例:metadata.operatorContactUrl=http://www.archive.org

Robots协议策略

robotsPolicyName 支持四种策略:

  1. obey/classic:遵守robots.txt和meta标签
  2. robotsTxtOnly:仅遵守robots.txt
  3. ignore:完全忽略

配置示例:

<property name="robotsPolicyName" value="obey"/>

技术细节

  • 支持RFC 9309路径通配符(*, $)
  • 仅识别meta标签中的"nofollow"指令
  • 单独的rel=nofollow由ExtractorHTML的obeyRelNoFollow控制

爬取范围控制

Heritrix3 使用DecideRules系统精细控制爬取范围,每个URI会经过一系列规则判断(ACCEPT/REJECT/PASS)。

核心决策规则详解

  1. 基础规则

    • AcceptDecideRule:接受所有URI
    • RejectDecideRule:拒绝所有URI
    • SeedAcceptDecideRule:接受种子URI
  2. 路径相关规则

    • PathologicalPathDecideRule:拒绝重复路径段(如/a/a/a/a/)
    • TooManyPathSegmentsDecideRule:限制路径段数量
  3. 内容相关规则

    • ContentLengthDecideRule:基于内容长度过滤
    • ContentTypeMatchesRegexDecideRule:按MIME类型过滤
  4. 域名控制规则

    • SurtPrefixedDecideRule:基于SURT格式的域名前缀匹配
    • OnDomainsDecideRule:特定域名白名单
  5. 高级规则

    • ScriptedDecideRule:支持JSR-223脚本自定义逻辑
    • TransclusionDecideRule:控制非导航链接的深度

调试决策流程

可通过日志记录查看决策过程:

  1. 修改logging.properties:
    org.archive.modules.deciderules.DecideRuleSequence.level = FINEST
    
  2. 启动时指定日志配置:
    -Djava.util.logging.config.file=/path/to/logging.properties
    

边界控制(Frontier)配置

Frontier管理URI调度,影响爬取效率和礼貌性。

礼貌性设置

  1. 延迟控制三要素

    • delayFactor:延迟系数(基于上次抓取时间)
    • maxDelayMs:最大延迟(毫秒)
    • minDelayMs:最小延迟(毫秒)

    示例配置:

    <property name="delayFactor" value="5.0" />
    <property name="maxDelayMs" value="30000" />
    <property name="minDelayMs" value="3000" />
    
  2. 带宽限制

    • maxPerHostBandwidthUsageKbSec:单主机带宽限制(KB/s)
    • 示例:<property name="maxPerHostBandwidthUsageKbSec" value="500" />

重试策略

  1. maxRetries:最大重试次数(默认30)
  2. retryDelaySeconds:重试间隔(秒,默认900)

示例:

<property name="retryDelaySeconds" value="900" />
<property name="maxRetries" value="30" />

链接提取控制

  1. extract404s:是否从404页面提取链接(默认true)
  2. extractIndependently:是否独立提取(默认false)

站点特定配置(Sheets)

Sheets系统允许为特定域名覆盖默认设置:

  • 可按顶级域(com/net/org)或二级域配置
  • 支持任意深度的属性路径覆盖
  • 实现精细化的站点级控制策略

通过掌握这些配置技巧,您可以构建出既高效又礼貌的专业网络爬虫,满足各种复杂的爬取需求。建议从默认配置开始,通过小规模测试逐步调整,最终形成适合特定场景的优化配置。

heritrix3 Heritrix is the Internet Archive's open-source, extensible, web-scale, archival-quality web crawler project. heritrix3 项目地址: https://gitcode.com/gh_mirrors/he/heritrix3

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

余靖年Veronica

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

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

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

打赏作者

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

抵扣说明:

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

余额充值