You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS Crawler爬取Amazon S3文件夹时如何排除日期格式路径

S3路径过滤仅爬取Current/data目录的实现方案

核心逻辑为:过滤所有包含YYYY-MM-DD日期格式、HH-MM-SS时间戳格式的路径,仅保留路径中包含/{表名}/Current/data的对象即可,以下是不同场景的实现方式:

1. 使用AWS CLI同步/拉取时过滤

直接通过CLI内置的exclude、include参数实现过滤,命令如下:

aws s3 sync s3://foo/ ./local-target/ \
  --exclude "*" \
  --include "*/Current/data/*" \
  --exclude "*/*-*-*/*"

参数说明:

  • 先设置--exclude "*"默认排除所有路径
  • 再通过--include "*/Current/data/*"仅放行所有表目录下Current/data的路径
  • 额外增加--exclude "*/*-*-*/*"兜底排除所有带年-月-日格式的层级路径,避免匹配遗漏

2. 使用Python boto3遍历过滤的实现

如果需要自定义爬取逻辑,可以通过boto3遍历+正则过滤实现:

import boto3
import re

s3 = boto3.client('s3')
bucket_name = 'foo'
# 匹配YYYY-MM-DD日期格式的正则
date_pattern = re.compile(r'\d{4}-\d{2}-\d{2}')

paginator = s3.get_paginator('list_objects_v2')
for page in paginator.paginate(Bucket=bucket_name):
    if 'Contents' not in page:
        continue
    for obj in page['Contents']:
        key = obj['Key']
        # 跳过带日期格式的路径
        if date_pattern.search(key):
            continue
        # 仅保留包含Current/data的路径
        if '/Current/data' in key:
            # 此处写入你的下载/处理逻辑,示例如下
            # s3.download_file(bucket_name, key, f'./local_save/{key.split("/")[-1]}')
            print(f"处理对象:{key}")

3. 通用爬虫的过滤规则

如果使用第三方爬虫工具,直接配置两条过滤规则即可:

  • 排除规则:路径匹配正则\d{4}-\d{2}-\d{2}/\d{2}-\d{2}-\d{2}/
  • 包含规则:路径匹配正则^[^/]+/Current/data/.*

内容的提问来源于stack exchange,提问作者DibyaRanjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 01:06:04