簡體   English   中英

Windows上的Python 3 / BeautifulSoup中的HTML實體處理

[英]HTML entity handling in Python 3/BeautifulSoup on Windows

我在Windows上的Python3 / BeautifulSoup中處理包含轉義的Unicode字符(中文范圍)的HTML時遇到問題。 在我嘗試打印提取的標簽或寫出到文件之前,BeautifulSoup似乎正常工作。 我將默認編碼設置為utf-8,但是似乎正在選擇cp1252編解碼器...

復制:

soup = BeautifulSoup("隱")

f = open("out.html", "w")
f.write(soup.text)
f.close()

堆棧跟蹤已附加。

Traceback (most recent call last):
  File "scrape.py", line 143, in <module>
    test_uni()
  File "scrape.py", line 126, in test_uni
    f.write(soup.text)
  File "c:\venv\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u96b1' in position 0: character maps to <undefined>

您試圖將非英語(unicode)字符串寫入文件,而Python希望該字符串默認為ascii字節串。 這與您的Windows環境無關。

在寫入文件之前對文本進行編碼應該可以,並且utf-8應該可以使用中文字符:

f.write(soup.text.encode('utf-8'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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