Uses lxml now, it's a lot quicker but does mean we need python-lxml