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:\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> 

我能做些什么来解决这个问题?

我通过添加.encode("utf-8")来修复它。

这意味着print(soup)成为print(soup.encode("utf-8"))

将抓取的网页内容保存到文件时,我得到了相同的UnicodeEncodeError 。 为了解决它,我把这个代码replace了:

 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("ascii") soup也将解决这个问题。

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