2016-03-18 82 views
2
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) 

傢伙您好,我有這個代碼的問題。如果我運行它,它來的錯誤BeautifulSoup「編碼(」 UTF-8" )

UnicodeEncodeError: 'charmap' codec can't encode character '\u2022' in position 138: character maps to

我tryed搜索,我發現,我不得不添加

.encode("utf-8")

,但如果我添加它來錯誤

AttributeError: 'ResultSet' object has no attribute 'encode'

^h我可以解決這個問題嗎?

我爲我的英語很抱歉,但我是意大利:)

+0

未來,請提供一個完整的堆棧跟蹤(您的英文很好btw)。 –

+0

請修改您的帖子以包含整個錯誤消息,包括回溯。爲了將來的參考,請閱讀[問]和[mcve],看看哪些問題引發有用的答案。 –

+0

您能否提供整個錯誤堆棧而不是錯誤的最後一行?另外,你在哪裏添加'.encode(「utf-8」)'?在添加encode()方法之後,請放置代碼。 –

回答

3

你在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)