UnicodeEncodeError: 'charmap' コーデックは文字をエンコードできません 質問する

UnicodeEncodeError: 'charmap' コーデックは文字をエンコードできません 質問する

ウェブサイトをスクレイピングしようとしていますが、エラーが発生します。

次のコードを使用しています:

import urllib.request
from bs4 import BeautifulSoup

get = urllib.request.urlopen("https://www.website.com/")
html = get.read()

soup = BeautifulSoup(html)

そして、次のエラーが発生します:

File "C:\Python34\lib\encodings\cp1252.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>

これを修正するにはどうすればいいでしょうか?

ベストアンサー1

UnicodeEncodeErrorスクレイピングした Web コンテンツをファイルに保存するときにも同じ問題が発生しました。これを修正するには、次のコードを置き換えました。

with open(fname, "w") as f:
    f.write(html)

これとともに:

with open(fname, "w", encoding="utf-8") as f:
    f.write(html)

Python 2 をサポートする必要がある場合は、以下を使用します。

import io
with io.open(fname, "w", encoding="utf-8") as f:
    f.write(html)

UTF-8 以外のエンコードを使用する場合は、実際のエンコードを指定しますencoding

おすすめ記事