如何处理HTML中的特殊字符?

时间:2013-08-20 10:20:52

标签: python python-2.7 html-parsing elementtree

我正在使用Python requests库来制作get&发布请求然后我使用ElementTree解析响应,如下所示:

etree.HTML(response.text)  

在某些情况下,我收到以下文字作为回应,其中有一些特殊字符的荧光笔用粗体显示:

Hoover’s Inc., a D&B Company puts you on the fastest path to business.                © 2012 Hoover's Inc, Inc. All rights reserved.  

这会给我带来问题,etree.HTML(response.text)方法返回None如果上面的响应文字中有特殊字符,由于这个原因,我无法使用{{1}获取所需信息} 方法。

另外,如果我尝试用空字符串('')替换上面有特殊字符的文本,我会得到以下编译时异常:

etree.xpath()

我还尝试在Non-ASCII character '\xe2' in file E:\abc\xyz.py on line 50, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 中对响应文本进行编码,但都是徒劳的 请帮助我摆脱这个麻烦。

1 个答案:

答案 0 :(得分:1)

您看到UTF-8字节的结果被误解为Latin-1(ISO-8859-1)。但是,您应该首先不将Unicode传递给ElementTree API。

改为使用response.content属性; .text为您提供解码值(在这种情况下,错误解码):

etree.HTML(response.content)