You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

爬虫CSV数据保存编码异常:带重音字符乱码的原因与解决?

解决方案

1. 问题原因

主要有两类可能:

  • 爬取阶段编码解析错误:网页内容未用正确编码解码,导致文本在写入CSV前就已乱码。比如部分网页可能标注编码为UTF-8,但实际返回内容用的是ISO-8859-1或Windows-1252,自动识别编码时出错,导致重音字符损坏。
  • CSV查看工具编码不匹配:Windows自带记事本等工具默认用系统编码(如GBK)打开文件,无法正确识别UTF-8编码的重音字符,造成显示乱码。

2. 修正方法

针对爬取阶段的编码问题

确保爬取网页时用正确编码解析内容。以requests库为例,可手动指定编码避免自动识别错误:

import requests
from bs4 import BeautifulSoup

response = requests.get(book_page_url)
response.encoding = 'utf-8'  # 强制指定网页编码为UTF-8
soup = BeautifulSoup(response.text, 'html.parser')
# 提取描述等内容
description = soup.find('div', class_='product_page').find_all('p')[3].text.strip()

针对CSV查看工具的兼容问题

  • 使用支持UTF-8的工具打开CSV,比如VS Code、Notepad++,或Excel(通过“数据”->“自文本/CSV”导入时选择UTF-8编码)。
  • 保存CSV时添加UTF-8 BOM(字节顺序标记),让Windows原生工具自动识别编码:
    # 替换原文件打开代码,用utf-8-sig编码
    with open('book_data.csv', 'w', newline='', encoding='utf-8-sig') as file:
        dictWriter = csv.DictWriter(file, fieldnames=['Title', 'Price', 'Rating', 'Description', 'UPC'])
        dictWriter.writeheader()
        dictWriter.writerow({'Title': title, 'Price': price, 'Rating': rating, 'Description': description, 'UPC': upc})
    

内容的提问来源于stack exchange,提问作者Seraph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:20:12