避免重复建设页面的核心,是在采集规则编写阶段就加入唯一标识与去重判断,让同一内容只生成一个页面。假设你要采集一个商品站,列表页有分页、详情页有规格参数,如果规则只按标题生成 URL,同一商品在不同分页出现就会重复入库;正确做法是先确定唯一键,再在写库前比对,命中已有记录就跳过或合并。
去重不是比对整段 HTML,而是找出能代表内容的稳定字段。常见唯一键有三类:
?from=、?page= 等跟踪参数后的地址。判断标准是:同一实体在不同入口出现时,这些字段是否保持一致。如果列表页跳转链接带会话参数,就必须先规范化再当唯一键,否则同一商品会被当成多条。
把采集规则拆成“提取—规范化—比对—写入”四步,去重放在比对环节,而不是等页面全部生成后再清理。具体可执行的做法:
常见错误是把去重条件写成“标题相同”。标题可能被站点改写、加后缀或省略,仅凭标题会漏判,导致同一内容出现多个页面。
列表页翻页时,同一详情链接会反复出现,这是重复建设的高发点。规则中应把列表页只当作发现入口,不直接生成页面;所有页面统一由详情页规则产出。若站点用不同 URL 指向同一详情,例如带和不带结尾斜杠,需要在规范化阶段合并。判断结果:如果两次采集得到的唯一键相同,就只保留一条,另一条作为来源记录。
规则上线前,用一小批数据跑一遍并核对:
适用条件是站点结构相对稳定;如果详情页 URL 本身会随登录状态变化,唯一键就要改用业务 ID 而非 URL。发现重复仍存在时,先检查规范化是否漏了参数,再检查比对是否在写入之前执行。
下一步:挑一个已有列表页和详情页的目标站,先只写提取与规范化两步规则,跑十页数据,人工核对唯一键是否稳定,再补上比对与写入逻辑。