Clean up how parser returns data

Make the parser hide it’s internals.
Return the data instead of mutating the state of the parser.
Update tests.
Update scraper code.