如何在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
相关产品推荐
相关产品推荐

