0

我正在使用 Pythonrequests库发出获取和发布请求,然后使用 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,因此,我无法使用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

我也尝试过对响应文本进行编码,ISO-8859-1但都是徒劳的。
请帮助我摆脱这个麻烦。

4

1 回答 1

1

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

改为使用response.content属性;.text给你解码的值(在这种情况下,解码不正确):

etree.HTML(response.content)  
于 2013-08-20T12:23:55.490 回答