The simple answer, imo, is that if you trust your source to be well-formed, go with the lxml solution. Otherwise, BeautifulSoup all the way.
This answer is three years old now; it’s worth noting, as Jonathan Vanasco does in the comments, that
BeautifulSoup4 now supports using
lxml as the internal parser, so you can use the advanced features and interface of BeautifulSoup without most of the performance hit, if you wish (although I still reach straight for
lxml myself — perhaps it’s just force of habit :)).