跳转至

将结果保存为 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、数组和对象等基本类型;日期时间、Pathset 等对象需要先转换为可序列化的值。

3. 不要静默覆盖重要结果

小任务可直接写入固定文件;持续任务更适合在文件名中包含抓取日期或运行标识,并同时记录来源与抓取时间。写入前确认成功解析的条数符合预期,避免异常页面生成空文件覆盖上一次有效结果。

4. 读取时也要验证

读取 CSV 或 JSON 后,仍应检查字段是否存在、值是否为空、URL 是否符合预期。存储格式只保证“可读”,不保证“数据正确”。

参考

评论