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

Python webscraping程序如何实现每日保存数据到不同名称的新文件?

Python爬虫自动生成递增序列文件名的实现方法

下面提供两种常用的实现方案,你可以根据自己的使用场景选择:

方案1:使用计数器文件记录序号(运行效率更高)

不需要每次遍历所有文件,适合文件量大的场景:

  • 逻辑说明:单独维护一个纯文本计数器文件,存储当前最新的文件序号,每次程序运行时读取序号+1生成新文件名,再将新序号回写到计数器文件
  • 示例代码:
import os

# 自定义计数器文件的存储路径
COUNTER_PATH = "./last_serial.txt"

# 读取当前最新序号,计数器不存在则默认从0开始
if os.path.exists(COUNTER_PATH):
    with open(COUNTER_PATH, "r", encoding="utf-8") as f:
        current_serial = int(f.read().strip())
else:
    current_serial = 0

# 生成新序号和文件名
new_serial = current_serial + 1
# 可根据你存储的文件类型修改后缀,比如.csv、.json、.html都可以
save_filename = f"test {new_serial}.txt"

# 此处替换为你自己的爬虫数据写入逻辑
with open(save_filename, "w", encoding="utf-8") as f:
    f.write("这里写入你抓取到的网页内容")

# 更新计数器文件
with open(COUNTER_PATH, "w", encoding="utf-8") as f:
    f.write(str(new_serial))

方案2:遍历现有文件匹配最大序号(无需额外维护文件)

不需要额外存储计数器,适合文件量不大的场景:

  • 逻辑说明:每次程序运行时扫描当前目录下所有符合test 数字命名规则的文件,提取数字的最大值,加1后作为新文件的序号
  • 示例代码:
import os
import re

# 匹配规则可根据你的命名习惯调整
name_pattern = re.compile(r"test (\d+)\..+")
max_serial = 0

# 遍历当前目录下的所有文件
for file in os.listdir("."):
    match_res = name_pattern.match(file)
    if match_res:
        current_num = int(match_res.group(1))
        if current_num > max_serial:
            max_serial = current_num

# 生成新文件名
new_serial = max_serial + 1
save_filename = f"test {new_serial}.txt"

# 写入爬虫数据
with open(save_filename, "w", encoding="utf-8") as f:
    f.write("这里写入你抓取到的网页内容")

额外可选方案(每日单次运行场景)

如果你的爬虫每天固定只运行1次,也可以直接用日期作为文件名标识,天然不会重复,不需要维护序号逻辑:

from datetime import datetime

# 生成年月日格式的日期字符串
today_str = datetime.now().strftime("%Y%m%d")
save_filename = f"test_{today_str}.txt"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 08:15:04