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

使用BeautifulSoup爬虫时CSV写入卢比符号遇Unicode编码错误

解决BeautifulSoup爬取后写入CSV的卢比符号编码错误问题

嘿,这个编码坑我之前踩过好几次!控制台能正常显示是因为你的终端已经配置了支持Unicode的编码(比如UTF-8),但写入CSV时没指定正确的编码,导致默认用了ASCII(不支持卢比符号这类特殊Unicode字符),就触发了UnicodeEncodeError。下面给你几个靠谱的解决办法:

方法一:打开CSV文件时指定UTF-8编码(推荐用utf-8-sig)

不管你用Python内置的csv模块还是直接写文件,打开文件时一定要显式指定encoding='utf-8-sig',而不是默认编码。utf-8-sig比普通utf-8更友好,能避免Windows下Excel打开CSV时出现乱码的问题。

用csv模块的示例代码:

import csv
from bs4 import BeautifulSoup

# 假设你已经通过BeautifulSoup提取到了价格数据
extracted_price = '₹ 10000'

# 正确写入CSV的方式
with open('product_prices.csv', 'w', newline='', encoding='utf-8-sig') as csv_file:
    writer = csv.writer(csv_file)
    # 写入表头
    writer.writerow(['Product Price'])
    # 写入含卢比符号的价格
    writer.writerow([extracted_price])

用pandas写入的示例(如果用pandas处理数据):

如果你习惯用pandas来整理爬取的数据,只需要在to_csv方法里指定编码:

import pandas as pd

# 假设data是包含价格列的DataFrame
data = pd.DataFrame({'Price': ['₹ 10000', '₹ 5000']})
data.to_csv('prices.csv', encoding='utf-8-sig', index=False)

方法二:确认字符串本身的编码没问题

有时候爬取到的字符串可能有编码混淆,你可以先把它转换为标准的Unicode字符串(Python 3里默认就是Unicode字符串,所以这个步骤可能不是必须,但遇到特殊情况可以试试):

# 假设raw_price是从网页提取的原始字符串
raw_price = soup.find('span', class_='price').text
# 确保是干净的Unicode格式
clean_price = raw_price.strip()

为什么控制台能显示但文件不行?

控制台(终端)现在大多默认用UTF-8编码,能识别卢比符号₹(Unicode U+20B9),但当你写入文件时,如果没指定编码,Python会用系统默认编码(Windows下通常是gbk,不支持这个符号),所以就报错了。指定UTF-8编码后,就能正确写入所有Unicode字符了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:11:27