[英]Getting a Unicode error when printing prettified BeautifulSoup
我目前正在上Python课程,在我们的Beautiful Soup单元中,讲师使用以下代码:
import requests, pprint
from bs4 import BeautifulSoup
url = 'https://www.epicurious.com/search/tofu%20chili'
response = requests.get(url)
page_soup = BeautifulSoup(response.content, 'lxml')
print(page_soup.prettify())
运行此代码时,出现以下错误:
Traceback (most recent call last):
File "/Users/arocklin/Documents/Python/whiteboard2.py", line 11, in <module>
print(page_soup)
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 1479: ordinal not in range(128)
我想知道为什么自从对他有用以来就得到了它,以及如何解决这个问题。 谢谢!
您的问题与BeautifulSoup
或与解析HTML无关。 直到BeautifulSoup.prettify
以及包括BeautifulSoup.prettify
代码都会为您提供由Web服务器定义但不受您控制的unicode字符串 。
然后,您尝试打印或多或少的任意unicode字符串。
在Python已确定终端sys.stdout
只能处理ascii编码的字符串的系统上,并且如果网络服务器(出于完全超出您的控制范围的原因)已决定为您提供ASCII范围之外的一些Unicode字符,则Python无法对其进行编码字符并引发异常。
我建议您研究您的Python版本如何确定在运行Python的平台上使用的编码/编解码器。
然后将一个测试用例放入程序的测试套件中,该套件实际上验证了它可以正确输出Unicode字符串。 对于该测试,您可以将整个程序替换为
print(u"foo\xe9bar")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.