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

