Fix unicode issue

Python 2 needs the unicode constructor in csv formatting.
Python 3 does not have the unicode constructor anymore.
This commit adds a 'fake' unicode constructor in Python 3 to ensure
compatibility across python versions.
Update to BeautifulSoup 4 + fix parser for bs4

In bs4, tag.get('class') is a list of classes. This commit fixes
the parser accordingly.