打印python漂亮的汤对象时出现Unicode错误

时间:2020-04-28 11:08:47

标签: python unicode beautifulsoup

import bs4 as bs
import urllib.request

sauce = urllib.request.urlopen('https://stats.swehockey.se/Teams/Info/TeamRoster/10333').read()
soup = bs.BeautifulSoup(sauce, 'lxml')

print(soup)

此代码产生以下错误

UnicodeEncodeError: 'ascii' codec can't encode character '\xbb' in position 1509: ordinal not in range(128)

我尝试了几种解决方法,但是它们都有一些缺点。在搜索stackoverflow之后,我发现了更改.stdout的解决方案,如下所示:

import bs4 as bs
import urllib.request
import sys
import codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
sys.stderr = codecs.getwriter('utf-8')(sys.stderr)

sauce = urllib.request.urlopen('https://stats.swehockey.se/Teams/Info/TeamRoster/10333').read()
soup = bs.BeautifulSoup(sauce, 'lxml')

print(soup)

我不再收到错误,但是,输出不再定向到终端。我不确定为什么会这样。使用.prettify('utf-8')方法也可以消除错误并产生输出,但是,生成的对象是字符串,而不是漂亮的汤对象,因此没有任何关联的bs方法(例如.find_all()) 。 .encode('utf-8')方法也会出现类似的问题。

此外,我注意到在输出中,漂亮的汤对象中仍然有许多\ r和\ n字符,而不是纯html内容。

我想要一个漂亮的汤对象,没有任何我可以打印到终端的\ r或\ n字符。

0 个答案:

没有答案