avoid using html.parser