Я думаю, что вы используете версию Python 2.x.
Если это так, я считаю, что вы должны использовать функцию open () модуля кодеков и сделать:
import codecs
with codecs.open(filename,'rb','cp1251') as f:
content = f.read()
tree = etree.parse(content)
Я думаю, что полученный контент был декодирован с cp1251 до Unicode ; Я не уверен, я не разбираюсь в манипуляциях с Юникодом.
Если это так, я полагаю, что после чтения etree должна иметь возможность проанализировать строку в Unicode, чтобы продолжить. Но я тоже немного знаю этри .
Обратите внимание, что даже если режим был 'r' , codecs.open () всегда открывает файл в двоичном режиме.
Надеюсь, это поможет