In [7]:
from bs4 import BeautifulSoup
import os

In [28]:
def parse_listing(data):
    result = {}
    listing = data.find_all(attrs={'class':'mms-ProfileListing'})[-1]
    tmp = [x.find_all('td')[:2] for x in listing.find_all('tr')]
    tmp = [(a.text.replace(u'\u200b','').replace('.','').strip(),b.text.replace(u'\u200b','').strip()) for a,b in tmp]
    last = None
    for col,val in tmp:
        if val:
            if val == u'keine veröffentlichungspflichtigen Angaben':
                val = ''
            result.setdefault(col or last,[]).append(val)
            if col:
                last = col
    return dict((col,';'.join(vals)) for col,vals in result.items())

In [29]:
def extract(name):
    profile = {}
    data = BeautifulSoup(file('pages/'+name))
    desc = data.find_all(attrs={'class':'mms-profileDesc'})[0]
    profile['name'] = desc.h2.text
    email = desc.find('a')
    if email:
        profile['email'] = email.text
    else:
        profile['email'] = None
        
    fraktion = data.find_all(attrs={'class':'mms-profileFraction'})[0]
    img = fraktion.find_all('img')
    profile['fraktion'] = img[0]['alt'].replace('.','')
        
    profile.update(parse_listing(data))
    return profile

In [30]:
print extract('thans.html')


{u'3b': u'Mitglied im Stadtrat der Kreisstadt Neunkirchen;Mitglied im Aufsichtsrat der Neunkircher Verkehrs AG;Mitglied der Verbandsversammlung des Sparkassenzweckverbandes Neunkirchen;Mitglied des Aufsichtsrates des Lebenshilfewerk im Kreis Neunkirchen gGmbH', u'2': u'Pers\xf6nlicher Referent des Ministers f\xfcr Justiz, Arbeit, Gesundheit und Soziales', 'fraktion': 'CDU', 'name': u'Hans ,  Tobias', u'1a': '', u'1c': '', u'1b': '', u'5': u'Mitglied im Obst- und Gartenbauverein M\xfcnchwies;Mitglied im Natur- und Vogelschutzverein M\xfcnchwies;Mitglied im NABU;Mitglied im BUND;Mitglied im Malteser Hilfsdienst;Mitglied im F\xf6rderverein Pallotti-Haus Neunkirchen;Mitglied im Reit- und Fahrverein Bliesen;Mitglied der Kreisverkehrswacht Neunkirchen e.V. (Vorstand);Mitglied der Lebenshilfe f\xfcr geistig Behinderte e.V.', u'1d': '', u'7': '', u'6': '', u'9': '', u'8': '', u'3a': u'Aufsichtsratsvorsitzender der Caritas Tr\xe4gergesellschaft Saarbr\xfccken mbH', u'4b': '', 'email': u'T.Hans@landtag-saar.de', u'4a': ''}

In [31]:
profiles = []

for item in os.listdir('pages'):
    print item
    profiles.append(extract(item))


asschramm.html
gbecker.html
iries.html
rtheis.html
arehlinger.html
bspaniol.html
mhilberer.html
HScharf.html
eroth.html
mjung.html
hley.html
pdoering.html
ucommercon.html
rmeyer.html
eeder.html
gheinrich.html
tschmitt.html
grink.html
pstrobel.html
gkolb.html
jmaurer.html
mziederripplinger.html
cglaeser.html
aaugustin.html
hpkurtz.html
hkugler.html
stoscani.html
spauluhn.html
dheib.html
uconradt.html
hulrich.html
ffinkler.html
olafontaine.html
thans.html
cblatt.html
gwaluga.html
vschmidt.html
akramp.html
sthul.html
densch.html
skrutten.html
pberg.html
rjost.html
hbierbaum.html
kkessler.html
rgeorgi.html
spalm.html
bwegner.html
bhuonker.html
kmeiser.html
mneyses.html

In [32]:
import json
with file('profiles.json','w') as f:
    json.dump(profiles, f)

In [6]: