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

如何在Python中生成自定义规则ID 用于爬虫数据提取场景

实现方案

首先拆解ID的组成规则,ID由三部分拼接而成:

  • 第一部分:站点名称的首字母,统一转大写
  • 第二部分:1位数字的星级数值
  • 第三部分:4位长度的语句序号,不足4位时补前导零

步骤1:封装ID生成函数

把ID生成逻辑封装为独立函数,方便在爬虫流程中复用:

def generate_scrape_id(site_name: str, star_level: int, seq_num: int) -> str:
    # 取站点名首位字符转大写
    site_prefix = site_name.strip()[0].upper()
    # 星级转字符串,可按需添加校验逻辑限制星级范围为1-9
    star_part = str(star_level)
    # 序号格式化为4位,不足补前导零
    seq_part = f"{seq_num:04d}"
    # 拼接返回最终ID
    return f"{site_prefix}{star_part}{seq_part}"

调用示例:执行generate_scrape_id("Amazon", 5, 1)会直接返回符合要求的A50001。

步骤2:爬虫流程集成

在爬虫的提取循环中维护序号计数器,每提取一条语句就调用函数生成对应ID即可:

# 单站点爬取配置示例
site_info = {
    "site_name": "Amazon",
    "star_level": 5
}
# 初始化语句序号,续爬时可以读取历史最大序号作为初始值
current_seq = 1

# 爬虫数据提取循环
for scrape_item in page_extract_results:
    # 提取目标语句内容
    target_sentence = scrape_item["sentence_text"]
    # 生成对应ID
    item_unique_id = generate_scrape_id(site_info["site_name"], site_info["star_level"], current_seq)
    # 组装最终结果,可写入数据库或本地文件
    save_data = {
        "id": item_unique_id,
        "content": target_sentence
    }
    # 序号自增,准备下一条语句的ID生成
    current_seq += 1

额外注意点

  • 多站点同时爬取时,需要给每个站点单独维护序号计数器,避免不同站点的序号冲突
  • 可按需添加边界校验:比如星级不在1-9范围内时抛出异常,序号超过9999时自动升级为5位序号
  • 爬取中断需要续爬的场景,可以把当前最新序号存在本地文件或数据库中,启动时直接读取作为初始值,不需要从头计数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:45:03