Use lxml parsing (so we can be forgiving) and handle missing headers