Python实现网页爬虫抓取文本分多文件存储(每文件存100+条)
嘿,这个需求很常见,我来给你捋个清晰的实现思路,附带可直接复用的代码片段~
Python实现批量文本拆分存储方案
核心思路
逻辑其实很直白:先把抓取到的所有文本汇总到一个列表里,然后按每100条为一组切割成小批次,最后把每个批次的内容写入单独的文件。就算最后一组不足100条,直接存到最后一个文件就行。
具体实现代码
假设你已经把所有抓取到的文本存在了一个叫all_texts的列表里(每条文本是一个独立字符串),下面的代码可以直接拿来用:
# 模拟抓取到的10000条数据,实际替换成你的爬虫返回结果 all_texts = [f"第{i}条抓取内容" for i in range(1, 10001)] # 每个文件存储的条数,可根据需求调整(比如改成150) batch_size = 100 # 计算需要生成的文件总数(向上取整,避免遗漏剩余内容) total_files = (len(all_texts) + batch_size - 1) // batch_size # 循环拆分并写入文件 for file_idx in range(total_files): # 计算当前批次的起始/结束索引 start = file_idx * batch_size end = start + batch_size current_batch = all_texts[start:end] # 生成有序的文件名,方便后续排序查看 filename = f"text_batch_{file_idx + 1:03d}.txt" # 写入文件,指定utf-8编码避免中文乱码 with open(filename, 'w', encoding='utf-8') as f: # 每条文本占一行,也可改成空行分隔:'\n\n'.join(current_batch) f.write('\n'.join(current_batch)) print(f"✅ 已完成 {filename} 写入,共 {len(current_batch)} 条内容")
几个实用细节补充
- 编码问题:一定要指定
encoding='utf-8',不然抓取内容里有中文时大概率会乱码。 - 文件名排序:用
{file_idx + 1:03d}生成三位数字序号,文件会按001、002...的顺序排列,不会出现1、10、100乱序的情况。 - 异常防护:如果爬虫过程中可能出现中断,建议给写入操作加个异常捕获,避免前功尽弃:
try: with open(filename, 'w', encoding='utf-8') as f: f.write('\n'.join(current_batch)) print(f"✅ 已完成 {filename} 写入,共 {len(current_batch)} 条内容") except Exception as e: print(f"❌ 写入 {filename} 失败,错误信息:{str(e)}")
这样处理下来,不管你抓了10000条还是更多内容,都能自动拆分到对应的文件里啦~
内容的提问来源于stack exchange,提问作者Rafiul Awal




