I've been using lxml for a few things on this site, which has been going well. I'm mostly using interfaces from lxml.etree, namely the ElementTree and Element classes, along with the E-constructor from lxml.builder.

This section of documentation explains the rules for matching tags, which apply to other methods like .find() as well. There are other things you can do with lxml, and other things you can do with the parts of it I've listed, but this was what I needed to do what I wanted.