如何将Naver地图爬虫数据导出为.csv文件?
核心思路
评论属于一对多的关联数据,最合理的导出方式是将每条评论单独作为一行,同时重复对应的商家基础信息(方便后续分析);如果想把同商家的所有评论合并到同一行,可用换行、分号这类分隔符将评论拼接成单个字符串。
下面基于Python标准库csv(无需额外安装)和常用的pandas两种方案给出代码,你可以根据自己的抓取数据结构调整。
假设你抓取到的数据结构
先模拟你已获取的变量结构(请替换成你实际的变量名):
# 示例数据:每个商家是字典,包含基础信息和评论列表 crawled_data = [ { "商家名称": "首尔烤肉店", "地址": "首尔市江南区XX路123号", "电话": "02-1234-5678", "评分": 4.8, "评论": [ {"用户": "张三", "内容": "肉质新鲜,服务很好", "评分": 5, "日期": "2024-05-01"}, {"用户": "李四", "内容": "排队太久,味道一般", "评分": 3, "日期": "2024-04-28"} ] }, { "商家名称": "釜山海鲜馆", "地址": "釜山市海云台区XX街456号", "电话": "051-9876-5432", "评分": 4.5, "评论": [ {"用户": "王五", "内容": "海鲜很新鲜,性价比高", "评分": 5, "日期": "2024-05-03"} ] } ]
方案1:使用Python标准库csv(无需额外安装)
这个方案不需要安装任何第三方包,直接用Python自带模块:
import csv # 1. 展开数据:将商家信息与每条评论合并成扁平字典 flattened_data = [] for shop in crawled_data: # 提取商家基础信息(排除评论字段) shop_info = {k: v for k, v in shop.items() if k != "评论"} # 遍历每条评论,合并商家信息 for comment in shop["评论"]: flattened_row = {**shop_info, **comment} flattened_data.append(flattened_row) # 2. 定义CSV表头(所有字段) headers = list(flattened_data[0].keys()) if flattened_data else [] # 3. 写入CSV文件 with open("naver_map_shops.csv", "w", encoding="utf-8-sig", newline="") as f: writer = csv.DictWriter(f, fieldnames=headers) writer.writeheader() # 写入表头 writer.writerows(flattened_data) # 写入所有行
注意:
encoding="utf-8-sig"是为了让Excel能正确识别中文,避免乱码。
如果你的评论只是纯文本列表(不是字典),比如"评论": ["好吃", "一般"],可改成如下处理:
flattened_data = [] for shop in crawled_data: shop_info = {k: v for k, v in shop.items() if k != "评论"} for comment_text in shop["评论"]: flattened_row = {**shop_info, "评论内容": comment_text} flattened_data.append(flattened_row)
方案2:使用pandas(更简洁,需安装)
如果你能安装依赖,pandas的处理会更简单:
- 先安装pandas(命令行执行):
pip install pandas
- 导出代码:
import pandas as pd # 展开数据 df_list = [] for shop in crawled_data: shop_df = pd.DataFrame(shop["评论"]) # 添加商家基础信息列 for k, v in shop.items(): if k != "评论": shop_df[k] = v df_list.append(shop_df) # 合并所有数据并导出 final_df = pd.concat(df_list, ignore_index=True) final_df.to_csv("naver_map_shops.csv", encoding="utf-8-sig", index=False)
关键注意事项
- 确保你的爬虫变量和示例结构对应,比如商家信息的键名、评论列表的键名,要替换成你实际的变量名。
- 如果抓取的评论为空,代码会自动跳过,不会报错。
- 导出的CSV文件会保存在代码运行目录下,直接用Excel或WPS打开即可查看。
内容的提问来源于stack exchange,提问作者Hanyang
相关产品推荐
相关产品推荐

