【发布时间】:2014-03-04 01:01:16
【问题描述】:
我正在尝试使用 python3 的 HTMLParser 解析 HTML 页面。
编辑:
尝试使用以下方式打印字符:
print ('\u25bc') #Prints the '▼' character
抛出 UnicodeEncodeError。
代码是文档示例中提供的代码:
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Start tag:", tag)
for attr in attrs:
print(" attr:", attr)
def handle_endtag(self, tag):
print("End tag :", tag)
def handle_data(self, data):
print("Data :", data)
def handle_comment(self, data):
print("Comment :", data)
def handle_entityref(self, name):
c = chr(name2codepoint[name])
print("Named ent:", c)
def handle_charref(self, name):
if name.startswith('x'):
c = chr(int(name[1:], 16))
else:
c = chr(int(name))
print("Num ent :", c)
def handle_decl(self, data):
print("Decl :", data)
当输入一个 HTML 文档(UTF-8 字符串)时,我得到了错误:
UnicodeExcodeError
'ascii' codec can't encode character '\u25bc' in position 0: ordinal not in range(128)
解析器 getpos() 方法的违规行是:
# |-- Parser stopped here.
<li><a href="#" class="dir">▼ Community</a>
读取的字节被正确解码为 UTF-8 字符串,然后被馈送到解析器的 feed() 方法,由于某种原因试图将其编码为 ASCII。
系统区域设置默认设置为“POSIX”,但使用本地设置为 en_US.UTF-8
export LANG=en_US.UTF-8
我该如何解决这个问题?
【问题讨论】:
标签: python-3.x unicode utf-8 html-parsing ascii