UnicodeEncodeError:'charmap'编解码器无法编码字符

 太完美无缺_817 发布于 2022-12-09 21:38

我正在试图抓一个网站,但它给了我一个错误.

我正在使用以下代码:

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 

我该怎么做才能解决这个问题?

6 个回答
  • 在保存get请求的响应时,在窗口10上的Python 3.7上引发了相同的错误。从URL接收到的响应的编码为UTF-8,因此始终建议检查编码,以便可以传递相同的编码以避免此类琐碎的问题因为它确实浪费了很多生产时间

    import requests
    resp = requests.get('https://en.wikipedia.org/wiki/NIFTY_50')
    print(resp.encoding)
    with open ('NiftyList.txt', 'w') as f:
        f.write(resp.text)
    

    当我用open命令添加encoding =“ utf-8”时,它以正确的响应保存了文件

    with open ('NiftyList.txt', 'w', encoding="utf-8") as f:
        f.write(resp.text)
    

    2022-12-11 02:04 回答
  • UnicodeEncodeError将抓取的Web内容保存到文件时,我的情况也是如此.要解决它,我替换了这段代码:

    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函数:

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

    2022-12-11 02:06 回答
  • 在Python 3.7中,运行Windows 10这有效(我不确定它是否适用于其他平台和/或其他版本的Python)

    替换此行:

    with open('filename', 'w') as f:

    有了这个:

    with open('filename', 'w', encoding='utf-8') as f:

    它工作的原因是因为在使用文件时编码被更改为UTF-8,因此UTF-8中的字符能够转换为文本,而不是在遇到UTF-8字符时返回错误不受当前编码的支持.

    2022-12-11 02:06 回答
  • 我通过添加.encode("utf-8")来修复它soup.

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

    2022-12-11 02:12 回答
  • 对于那些仍然收到此错误,添加encode("utf-8")soup也将解决这个问题。

    soup = BeautifulSoup(html_doc, 'html.parser').encode("utf-8")
    print(soup)
    

    2022-12-11 02:57 回答
  • 甚至我在尝试打印,读取/写入或打开它时都遇到与编码相同的问题。如上述其他提到的那样,如果您尝试打印.encoding =“ utf-8”,则将有所帮助。

    soup.encode(“ utf-8”)

    如果您尝试打开抓取的数据并将其写入文件,请使用(......,encoding =“ utf-8”)打开文件

    使用open(filename_csv,'w',newline ='',encoding =“ utf-8”)作为csv_file:

    2022-12-11 03:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有