【问题标题】:BeautifulSoup "encode("utf-8")BeautifulSoup“编码(“utf-8”)
【发布时间】:2016-07-05 07:50:43
【问题描述】:
from bs4 import BeautifulSoup   
import urllib.request    

link = ('https://mywebsite.org')  
req = urllib.request.Request(link, headers={'User-Agent': 'Mozilla/5.0'})
url = urllib.request.urlopen(req).read()

soup =  BeautifulSoup(url, "html.parser")  
body = soup.find_all('div', {"class":"wrapper"})

print(body)

大家好,我的代码有问题。如果我运行它会出现错误

UnicodeEncodeError: 'charmap' 编解码器无法对位置 138 中的字符 '\u2022' 进行编码:字符映射到

我尝试搜索,发现必须添加

.encode("utf-8")

但如果我添加它会出现错误

AttributeError: 'ResultSet' 对象没有属性 'encode'

我该如何解决这个问题?

对不起我的英语,但我是意大利人:)

【问题讨论】:

  • 能否请您提供整个错误堆栈,而不仅仅是错误的最后一行?另外,您在哪里添加了 .encode("utf-8") ?也请在添加 encode() 方法后输入代码。
  • 以后,请提供完整的堆栈跟踪(顺便说一句,您的英语很好)。
  • 请编辑您的帖子以包含整个错误消息,包括回溯。供将来参考,请阅读How to Askminimal reproducible example 以了解什么样的问题会引出有用的答案。

标签: python python-3.x utf-8 character-encoding python-unicode


【解决方案1】:

您在 Windows 上并尝试打印到控制台。 print() 正在抛出异常。

Windows 控制台本身仅支持 8 位代码页,因此您所在区域之外的任何内容都会中断(尽管人们对 chcp 65001 的评价是这样的)。

您需要安装和使用https://github.com/Drekin/win-unicode-console。该模块与控制台 API 进行低级别对话,支持多字节字符。

或者,不要打印到控制台并将输出写入使用编码打开的文件。例如:

with open("myoutput.log", "w", encoding="utf-8") as my_log:
    my_log.write(body)

【讨论】:

    猜你喜欢
    • 2011-10-30
    • 2012-11-07
    • 2015-03-04
    • 1970-01-01
    • 2015-11-15
    • 2011-04-27
    • 2012-09-22
    • 2019-07-17
    • 1970-01-01
    相关资源
    最近更新 更多