UnicodeDecodeError: 'utf-8'

UnicodeDecodeError: 'utf-8'

我用这个脚本在这个网站上抓取评论:https://fr.trustpilot.com/review/jardiland.com

import requests
from requests import get
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np

urls = ["https://fr.trustpilot.com/review/jardiland.com",
        "https://fr.trustpilot.com/review/jardiland.com?page=2",
        "https://fr.trustpilot.com/review/jardiland.com?page=3",
        "https://fr.trustpilot.com/review/jardiland.com?page=4",
        "https://fr.trustpilot.com/review/jardiland.com?page=5",
        "https://fr.trustpilot.com/review/jardiland.com?page=6",
        "https://fr.trustpilot.com/review/jardiland.com?page=7",
        "https://fr.trustpilot.com/review/jardiland.com?page=8"]

comms = []

for url in urls : 
    results = requests.get(url)

    soup = BeautifulSoup(results.text, "html.parser")
    commentary = soup.find_all('p', class_='review-content__text')

    for container in commentary:
        comm  = container.text
        comms.append(comm)

    data = pd.DataFrame({
        'comms' : comms})

    data['comms'] = data['comms'].str.replace('\n', '')

#print(movies.head())

data.to_csv('df.csv')

我得到了这个:

当我在 Excel 中打开它时,它并不漂亮,所以我 c/c 并使用文本到列,我得到了这个:

看起来不错,但是当我想在Python中阅读它做进一步分析时,我得到一个错误:

df = pd.read_csv('datajardiland.csv')
df.head()


UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe0 in position 24: invalid continuation byte

我尝试了一些在 Whosebug 上找到的方法,例如:

with open("datajardiland.csv") as f:
    print(f.encoding)

cp1252

df = pd.read_csv('datajardiland.csv', encoding='cp1252')
df.head()

但是没用。

我做错了什么?

尝试使用 ISO-8859 的编码参数。 df = pd.read_csv('datajardiland.csv', encoding='iso-8859-1')

编辑:

此外,尝试在使用 df.to_csv('test.csv', encoding='iso-8859-1')

保存 CSV 时强制执行编码

编辑 2:

因为数据似乎是带有大量逗号和句号的“原始”文本。您可以尝试对 df.to_csv('file.csv', sep=';')pd.read_csv('file.csv', sep=';') 使用不同的分隔符。或者您可以在所有文本数据周围设置 " " 以避免问题