概述
Fess 的爬虫会从网站或文件系统等自动收集内容,并注册到搜索索引中。 本指南介绍爬虫的基本概念和配置方法。
爬虫的基本概念
什么是爬虫
爬虫(Crawler)是以指定的URL或文件路径为起点,自动收集内容并追踪链接的程序。
Fess 的爬虫具有以下特点:
支持多种协议: HTTP/HTTPS、文件系统、SMB、FTP等
计划执行: 定期自动爬取
增量爬取: 仅更新变更的内容
并行处理: 同时爬取多个URL
遵守robots协议: 遵守 robots.txt
爬虫类型
Fess 根据目标提供以下爬虫类型。
创建爬取配置
添加基本爬取配置
访问管理页面
在浏览器中访问
http://localhost:8080/admin并以管理员身份登录。打开爬虫配置页面
从左侧菜单选择”爬虫”→”Web”或”文件系统”。
创建新配置
点击”新建”按钮。
输入基本信息
名称: 爬取配置的标识名称(例: 公司Wiki)
URL: 爬取起始URL(例:
https://wiki.example.com/)间隔: 每个URL的访问间隔(毫秒)(例: 10000)
线程数: 并行爬取数(例: 5)
深度: 追踪链接的层级深度(例: 3)
保存
点击”创建”按钮保存配置。
Web爬虫配置示例
公司内网网站爬取
公开网站爬取
文件爬虫配置示例
本地文件系统
SMB/CIFS(Windows文件共享)
认证信息配置
访问需要认证的网站或文件服务器时,需要配置认证信息。
在管理页面选择”爬虫”→”Web认证”(文件服务器则选择”文件认证”)
点击”新建”
输入认证信息:
Note
“方案”从 Basic / Digest / NTLM / Form 中选择。 此外,请务必在”Web Config”(文件认证时为”文件系统设置”)中选择目标爬取配置。 认证信息与爬取配置绑定使用。
点击”创建”
执行爬取
手动执行
如需立即执行已配置的爬取,请从”调度器”菜单启动爬取任务。
打开”调度器”菜单
选择”Default Crawler”任务
点击”立即开始”按钮
确认任务执行状态
Note
爬取配置(Web/文件系统)的列表页面没有单独的”启动”按钮。 爬取以调度器任务为单位执行。 “Default Crawler”任务会针对所有已启用的爬取配置执行。
计划执行
定期执行爬取:
打开”调度器”菜单
选择”Default Crawler”任务
设置计划表达式(Cron格式)
点击”更新”
Note
Fess 的调度器使用 cron4j 格式的计划表达式。 字段为”分 时 日 月 星期”共5个字段,不使用 Quartz 那样的秒字段或 ?。 星期以 0 (周日) 到 6 (周六) 表示。
确认爬取状态
确认正在执行的爬取状态:
打开”调度器”菜单
确认正在执行的任务
在日志中确认详细信息:
Note
以上路径适用于RPM/DEB软件包安装。对于zip/tar.gz部署,日志位于
logs/目录下。
基本配置项
爬取目标限制
URL模式限制
可以将特定的URL模式作为爬取目标,或将其排除。
包含的URL模式(正则表达式):
排除的URL模式(正则表达式):
深度限制
限制追踪链接的层级深度:
0: 仅起始URL
1: 起始URL及其链接页面
空白(未设置): 无限制(追踪所有链接)
Note
管理页面的”深度”字段只能输入 0 以上的整数。 如需无限制,请将字段留空 (内部视为 -1,表示无限制)。
最大访问数
爬取页面数的上限:
爬取到1000个页面后停止。将字段留空则表示无限制(无上限)。
并行爬取数(线程数)
指定同时爬取的URL数量。
| 环境 | 推荐值 | 说明 |
|---|---|---|
| 小规模网站(〜1万页) | 3〜5 | 降低目标服务器负载 |
| 中规模网站(1万〜10万页) | 5〜10 | 平衡配置 |
| 大规模网站(10万页以上) | 10〜20 | 需要快速爬取 |
| 文件服务器 | 3〜5 | 考虑文件I/O负载 |
Warning
线程数过多会对爬取目标服务器造成过大负载。 请设置适当的值。
Note
新建时的默认线程数为:Web爬虫 1、文件爬虫 5。 请求间隔(间隔)的默认值为:Web爬虫 10000 毫秒、文件爬虫 1000 毫秒。
爬取间隔
指定爬取执行频率。
文件大小配置
可以设置爬取文件大小的上限。
获取文件大小上限
在爬虫配置的”配置参数”中添加:
获取最大10MB的文件。默认无限制。
Note
爬取大型文件时,请同时调整内存配置。 详情请参阅 内存配置。
索引文件大小上限
可以为每种文件类型设置索引大小上限。
默认值:
HTML文件: 2.5MB
其他文件: 10MB
配置文件: app/WEB-INF/classes/crawler/contentlength.xml
默认配置:
自定义示例(添加处理PDF文件最大5MB的配置):
Warning
增加处理文件大小时,也需要增加爬虫的内存配置。
Note
当文档大小超过50MB时,还需要更改OpenSearch端的设置。 OpenSearch默认将JSON内容中字符串字段的最大长度限制为50MB。
请在 opensearch.yml 中添加以下内容:
以上是设置为100MB的示例。详细信息请参阅 OpenSearch文档 。
单词长度限制
概述
仅包含英数字的长字符串或连续符号会导致索引大小增加和性能下降。 因此,|Fess| 默认设置了以下限制:
连续英数字: 最多20个字符
连续符号: 最多10个字符
配置方法
编辑 fess_config.properties。
默认配置:
示例: 放宽限制
Note
如需搜索长英数字符串(例: 序列号、令牌等), 请增大此值。但索引大小会增加。
代理服务器配置
概述
从内网爬取外部网站时,可能会被防火墙阻止。 这种情况下需要通过代理服务器进行爬取。
配置方法
在管理页面的爬取配置中,在”配置参数”中添加以下内容。
基本代理配置:
需要认证的代理:
从代理服务器排除特定主机:
从代理排除的主机不在爬取配置的配置参数中设置,而是通过JVM系统属性配置。 请在 fess.in.sh (Linux/Mac) 或 fess.in.bat (Windows) 中设置环境变量 FESS_NON_PROXY_HOSTS。
所有爬取配置共用的代理配置
可以在 fess_config.properties 中设置适用于所有爬取配置的公共代理。 当各爬取配置未单独指定代理时,此设置生效。
此设置适用于爬虫所有爬取配置 (若爬取配置侧指定了 client.proxyHost / client.proxyPort,则以爬取配置的值优先)。
系统全局(JVM)代理配置
如需将 Fess 的所有HTTP通信(爬虫、SSO、LLM联动等)都通过代理, 请在 fess.in.sh (Linux/Mac) 或 fess.in.bat (Windows) 中设置环境变量。 这些环境变量会被转换为JVM系统属性(-Dhttp.proxyHost 等)。
Note
FESS_PROXY_HOST / FESS_PROXY_PORT 同时适用于HTTP和HTTPS。 Shell的 http_proxy / https_proxy / no_proxy 环境变量不会被JVM读取, 设置这些变量不会生效。
robots.txt 配置
概述
robots.txt 是向爬虫指示是否允许爬取的文件。 Fess 默认遵守 robots.txt。
配置方法
忽略 robots.txt 时,请编辑 fess_config.properties。
此属性的默认值为 false,|Fess| 遵守 robots.txt。 设置为 true 则忽略 robots.txt。
如需忽略HTML的robots元标签(noindex、nofollow 等), 请使用以下属性(默认值为 false):
Warning
爬取外部网站时,请遵守 robots.txt。 忽略可能会对服务器造成过大负载或违反使用条款。
User-Agent 配置
可以更改爬虫的User-Agent。
Web爬虫的情况
Web爬虫有专用的”用户代理”字段。 请在爬取配置的编辑页面的”用户代理”字段中输入值。
Note
在Web爬取配置中,即使在”配置参数”中指定了 client.userAgent, 也会被专用的”用户代理”字段的值覆盖。 Web爬虫请务必使用专用字段。
文件爬虫等的情况
对于没有专用用户代理字段的爬虫, 请在爬取配置的”配置参数”中添加指定。
编码配置
爬取数据编码
在 fess_config.properties 中配置:
文件名编码
文件系统文件名的编码:
爬取故障排除
爬取未启动
确认事项:
确认调度器是否已启用
在”调度器”菜单中确认”Default Crawler”任务是否已启用
确认爬取配置是否已启用
在爬取配置列表中确认目标配置是否已启用
确认日志
爬取中途停止
可能的原因:
内存不足
确认
fess-crawler.log中是否有OutOfMemoryError增加爬虫内存(详情参阅 内存配置)
网络错误
通过爬取配置的”配置参数”调整超时设置:
client.connectionTimeout为连接建立超时,client.soTimeout为数据接收超时,单位均为毫秒。
爬取目标错误
确认是否频繁出现404错误
在日志中确认错误详情
特定页面未被爬取
确认事项:
确认URL模式
确认是否匹配排除URL模式
确认 robots.txt
确认目标网站的
/robots.txt
确认认证
如需认证的页面,请确认认证配置
深度限制
确认链接层级是否超过深度限制
最大访问数
确认是否达到最大访问数
爬取缓慢
对策:
增加线程数
增加并行爬取数(但需注意目标服务器负载)
排除不需要的URL
将图片或CSS文件等添加到排除URL模式
调整超时配置
响应慢的网站,可缩短超时时间
增加爬虫内存
详情参阅 内存配置
最佳实践
爬取配置推荐事项
设置适当的线程数
设置适当的线程数,避免对目标服务器造成过大负载。
优化URL模式
通过排除不需要的文件(图片、CSS、JavaScript等), 可缩短爬取时间并提高索引质量。
设置深度限制
根据网站结构设置适当的深度。 仅在需要爬取整个网站时将深度字段留空(无限制)。
设置最大访问数
设置上限,防止意外爬取大量页面。
调整爬取间隔
根据更新频率设置适当的间隔。 - 频繁更新的网站: 每1小时〜数小时 - 不常更新的网站: 每1天〜1周
计划配置推荐事项
夜间执行
在服务器负载较低的时段(例: 深夜2点)执行。
避免重复执行
配置为在上次爬取完成后再启动下次爬取。
错误通知
配置爬取失败时的邮件通知。