将结果保存为 CSV 和 JSON
抓取结果应以可复核、可再次处理的格式保存。小型表格数据通常适合 CSV;保留嵌套结构、原始响应片段或元数据时,JSON 更合适。
1. 写入 CSV
Python 的 csv 模块建议以 newline='' 打开文件,让模块自行处理换行。
import csv
from pathlib import Path
rows = [
{"title": "第一篇", "url": "https://example.com/1", "summary": "示例"},
]
fields = ["title", "url", "summary"]
with Path("articles.csv").open("w", encoding="utf-8", newline="") as file:
writer = csv.DictWriter(file, fieldnames=fields)
writer.writeheader()
writer.writerows(rows)
CSV 没有统一的类型系统;数字、日期和空值写出后都会表现为文本约定。因此应在 README 或数据字典中说明列含义、编码和日期格式。
2. 写入 JSON
import json
from pathlib import Path
payload = {
"source": "https://example.com/list",
"items": rows,
}
with Path("articles.json").open("w", encoding="utf-8") as file:
json.dump(payload, file, ensure_ascii=False, indent=2)
ensure_ascii=False 让中文直接写入文件;indent=2 便于人工查看。JSON 只支持字符串、数值、布尔值、null、数组和对象等基本类型;日期时间、Path、set 等对象需要先转换为可序列化的值。
3. 不要静默覆盖重要结果
小任务可直接写入固定文件;持续任务更适合在文件名中包含抓取日期或运行标识,并同时记录来源与抓取时间。写入前确认成功解析的条数符合预期,避免异常页面生成空文件覆盖上一次有效结果。
4. 读取时也要验证
读取 CSV 或 JSON 后,仍应检查字段是否存在、值是否为空、URL 是否符合预期。存储格式只保证“可读”,不保证“数据正确”。