Java HTML Parsers

Does anyone know of any good open source HTML parsers for Java? I want to be able to parse a HTML document (which may or may not be valid) and extract information from it.

I’ve found a few on Google, but I’ve no idea how good they are.