[英]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.