如何在Python循环中生成唯一HTML文件名用于保存批量下载的网页
解决爬虫保存文件重名问题的方案
你可以直接复用循环内的两个独有标识contract_number和author_position拼接文件名,二者的组合对每个请求都是唯一的,不会出现重名问题,同时可保留.html后缀。
修改后的代码示例
for contract_number in range(20): print(contract_number) for author_position in range(1,6): url = (insert link here).format(contract_number, author_position) r = requests.get(url, allow_redirects=True) # 用唯一标识组合生成文件名,不会重复 file_name = f"contract_{contract_number}_pos_{author_position}.html" open(file_name, 'wb').write(r.content)
可选扩展方案
如果后续需要兼容更多变量维度,还可以选择以下方式生成唯一文件名:
- 拼接毫秒级时间戳:导入time模块后,将
int(time.time()*1000)加入文件名,正常请求速度下不会出现重复 - 对URL生成哈希值:用hashlib模块对请求的原始URL生成md5值作为文件名,适合URL本身全局唯一的场景
- 新增全局自增ID:定义初始值为1的全局变量,每成功保存一个文件就自增1,将ID加入文件名
小提示:如果你后续想使用页面标题等爬取到的动态内容作为文件名,记得提前替换掉
/ \ : * ? " < > |等系统禁止的文件名字符,避免保存失败。
内容的提问来源于stack exchange,提问作者Oliver
相关产品推荐
相关产品推荐

