我正在使用python2.7和lxml。我的代码如下
import urllib
from lxml import html
def get_value(el):
return get_text(el, 'value') or el.text_content()
response = urllib.urlopen('http://www.edmunds.com/dealerships/Texas/Frisco/DavidMcDavidHondaofFrisco/fullsales-504210667.html').read()
dom = html.fromstring(response)
try:
description = get_value(dom.xpath("//div[@class='description item vcard']")[0].xpath(".//p[@class='sales-review-paragraph loose-spacing']")[0])
except IndexError, e:
description = ''
代码在try内部崩溃,发出错误
UnicodeDecodeError at /
'utf8' codec can't decode byte 0x92 in position 85: invalid start byte
无法编码/解码的字符串是:ouldn t
我尝试过使用很多技术,包括.encode('utf8'),但都没有解决问题。我有两个问题:
答案 0 :(得分:8)
该页面正在使用charset=ISO-8859-1
进行投放。从那解码到unicode。
[
答案 1 :(得分:1)
您的except子句仅处理IndexError类型的异常。问题是UnicodeDecodeError,它不是IndexError - 因此异常不会被该except子句处理。
还不清楚'get_value'的作用,这可能是实际问题出现的地方。
答案 2 :(得分:0)
答案 3 :(得分:0)
解码对unicode的响应,在使用fromhtml解析之前正确处理错误(忽略错误)。
捕获UnicodeDecodeError或所有错误。