Запутавшись в lxml и отчаявшись я решил уже просить вашей помощи, зашел на форум, начала писать, но в последний момент у меня получилось сделать то, что я хотел.
Выкладываю решение, возможно кому-то будет полезно.
# -*- coding: utf-8 -*-
from lxml import etree, html
class Fail(Exception):
pass
class MyTree(etree.ElementBase):
def sxpath(self, xpath):
lst = self.xpath(xpath)
if not lst:
raise Fail('Not found %s' % xpath)
return lst
parser_lookup = etree.ElementDefaultClassLookup(element=MyTree)
parser = html.HTMLParser()
parser.set_element_class_lookup(parser_lookup)
htmlstr = open('tutorial.htm', 'r').read()
tree = etree.HTML(htmlstr, parser)
xp = '/html/body/table/tbody/tr/td'
try:
print tree.sxpath(xp)
except Fail, err:
print err
print tree.xpath(xp)