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=';')
使用不同的分隔符。或者您可以在所有文本数据周围设置 " " 以避免问题
我用这个脚本在这个网站上抓取评论: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')
编辑 2:
因为数据似乎是带有大量逗号和句号的“原始”文本。您可以尝试对 df.to_csv('file.csv', sep=';')
和 pd.read_csv('file.csv', sep=';')
使用不同的分隔符。或者您可以在所有文本数据周围设置 " " 以避免问题