I have been using BeautifulSoup but as I understand it that library is no longer being maintained. So what should I use ? I have heard about Xpath but what else is there ?
Well, if you're not duty-bound to python, you could always use a TagSoup parser.  It's a Java library, but it gives very good results.  You could also just use Tidy to clean your input before trying to parse it.
No more BeautifulSoup