簡體   English   中英

打印美化的BeautifulSoup時出現Unicode錯誤

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM