UnicodeEncodeError: кодек 'charmap' не может кодировать символы
Я пытаюсь очистить сайт, но это дает мне ошибку.
Я использую следующий код:
import urllib.request
from bs4 import BeautifulSoup
get = urllib.request.urlopen("https://www.website.com/")
html = get.read()
soup = BeautifulSoup(html)
print(soup)
и я получаю следующую ошибку:
File "C:Python34libencodingscp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 70924-70950: character maps to <undefined>
что я могу сделать, чтобы это исправить?
3 ответа:
я исправил это путем добавления
.encode("utf-8")
доsoup
.что это значит
print(soup)
становитсяprint(soup.encode("utf-8"))
.
я получал то же самое
UnicodeEncodeError
при сохранении очищенного веб-контента в файл. Чтобы исправить это Я заменил этот код:with open(fname, "w") as f: f.write(html)
С этого:
import io with io.open(fname, "w", encoding="utf-8") as f: f.write(html)
используя
io
обеспечивает обратную совместимость с Python 2. Если вам нужно только поддерживать Python 3, Вы можете использовать встроенныйopen
вместо функции.