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

Google Play爬虫结果存CSV遇编码及Pandas导出错误求助

解决Google Play爬虫CSV导出的UnicodeError问题

嘿,这个问题我太熟了——爬海外应用数据的时候,Unicode编码和特殊字符简直是家常便饭的坑。咱们一步步来搞定它:

1. 先给pandas的to_csv指定正确编码

大部分情况下,导出报错是因为pandas默认编码不支持复杂Unicode字符。直接在导出时指定encoding='utf-8-sig'(带BOM的UTF-8,Windows下Excel也能正确识别),这能解决90%的问题:

import pandas as pd

# 假设你的爬取数据存在data_list里,先转成DataFrame
df = pd.DataFrame(data_list)
# 导出时指定编码,关闭索引避免多余列
df.to_csv('play_store_data.csv', encoding='utf-8-sig', index=False)

如果是在Linux/macOS环境,用encoding='utf-8'也可以,但utf-8-sig兼容性更强,跨系统都能用。

2. 过滤爬取数据中的特殊控制字符

如果指定编码后还是报错,大概率是爬回来的内容里藏着不可打印的控制字符(比如某些Unicode控制码)。这时候需要先清洗数据,把这些“脏字符”去掉:

import re
import pandas as pd

def clean_unicode_chars(text):
    """清理字符串中的不可打印Unicode控制字符"""
    if isinstance(text, str):
        # 只保留可打印的字符,去掉所有控制码
        return re.sub(r'[\x00-\x1F\x7F-\x9F]', '', text)
    return text  # 非字符串类型直接返回

# 对DataFrame的所有列应用清洗函数
df = pd.DataFrame(data_list).applymap(clean_unicode_chars)
# 再导出
df.to_csv('play_store_data.csv', encoding='utf-8-sig', index=False)

3. 爬取阶段提前处理编码问题

有时候问题出在爬取环节——如果请求返回的内容解码不彻底,后续导出也会炸。可以在爬取时就强制用UTF-8解码,并且替换无法识别的字符:

import requests

def crawl_app_details(package_name):
    url = f"https://play.google.com/store/apps/details?id={package_name}&hl=en"
    response = requests.get(url)
    # 强制用UTF-8解码,遇到错误字符直接替换成?,避免后续报错
    html_content = response.content.decode('utf-8', errors='replace')
    # 这里写你的解析逻辑(比如用BeautifulSoup),提取标题、开发者等数据
    # ...
    return app_data

4. 升级pandas到最新版本

旧版本的pandas在处理某些边缘Unicode字符时可能存在bug,升级到最新版能解决一些奇怪的编码问题:

pip install --upgrade pandas

按这个顺序试下来,应该能解决你的导出报错问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:20:54