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>


Что я могу сделать, чтобы исправить это?

1281   3  

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 вместо этого.

Для тех, кто все еще получает эту ошибку, добавление encode("utf-8") к soup также исправит это.

soup = BeautifulSoup(html_doc, 'html.parser').encode("ascii")
print(soup)

Comments

    Ничего не найдено.