import pywikibot

lng = 'nl'
site = pywikibot.Site(lng, "wikipedia")
repo = site.data_repository()

achternaamCLAIM= u'P734'
beroepCLAIM    = u'P106'
geboortelandCLAIM = u'P27'
geborenCLAIM   = u'P569'
gestorvenCLAIM = u'P570'
is_eenCLAIM    = u'P31'
nationaliteitCLAIM = u'P495'

def GetBeroep(item):                    
    prnOccupation = u'2 n/a '
    if beroepCLAIM in item.claims:   #beroep
        AantalBeroepen = len(item.claims.get(beroepCLAIM) )
        for i in range(AantalBeroepen):   
            LNKoccupation = item.claims.get(beroepCLAIM)[i].getTarget()
            try :
                WDIoccupation = pywikibot.ItemPage(repo,LNKoccupation.title())
                WDIoccupation.get(get_redirect=True)
                if (lng in WDIoccupation.labels) :
                    if i>0:
                        if i == AantalBeroepen -1:
                            prnOccupation = prnOccupation + ' en ' + WDIoccupation.labels[lng]                               
                        else:
                            prnOccupation = prnOccupation + ', ' + WDIoccupation.labels[lng]                               
                    else: 
                        prnOccupation = WDIoccupation.labels[lng]
            except :
                missing = 'occupation'
            i += 1
    return prnOccupation  

    
def get_text_for_claim(item, claim):    
    Result = u'' 
    try:
        claimlink = item.claims.get(claim)[0].getTarget()
        claimitem = pywikibot.ItemPage(repo,claimlink.title())
        claimitem.get(get_redirect=True)
        if (lng in claimitem.labels):
            Result = claimitem.labels[lng]
    except:                               
        missing = 'missing'
    return Result

def nameofcitizenship(CountryName,Occupation) :
    switcher = {
        u'Afghanistan' : u'Afghaans',
        u'Albanië' : u'Albanees',
        u'Algerije' : u'Algerijns',
        u'Verenigde Staten van Amerika' : u'Amerikaans',
        u'Amerikaans-Samoa' : u'Amerikaans-Samoaans',
        u'Andorra' : u'Andorrees',
        u'Angola' : u'Angolees',
        u'Anguilla' : u'Anguillaans',
        u'Argentinië' : u'Argentijns',
        u'Armenië' : u'Armeens',
        u'Aruba' : u'Arubaans',
        u'Australië' : u'Australisch',
        u'Azerbeidzjan' : u'Azerbeidzjaans',
        u'Bahama\'s' : u'Bahamaans',
        u'Bahrein' : u'Bahreins',
        u'Barbados' : u'Barbadiaans',
        u'België' : u'Belgisch',
        u'Belize' : u'Belizaans',
        u'Bangladesh' : u'Bengalees',
        u'Benin' : u'Benins',
        u'Bermuda' : u'Bermudaans',
        u'Bhutan' : u'Bhutaans',
        u'Myanmar' : u'Birmees',
        u'Bolivia' : u'Boliviaans',
        u'Bolivië' : u'Boliviaans',
        u'Botswana' : u'Botswaans',
        u'Brazilië' : u'Braziliaans',
        u'Groot-Brittannië (en Noord-Ierland)' : u'Brits',
        u'Verenigd Koninkrijk' : u'Brits',
        u'Brunei' : u'Bruneis',
        u'Bulgarije' : u'Bulgaars',
        u'Burkina Faso' : u'Burkinees',
        u'Burundi' : u'Burundees',
        u'Cambodja' : u'Cambodjaans',
        u'Canada' : u'Canadees',
        u'Centraal-Afrikaanse Republiek' : u'Centraal-Afrikaans',
        u'Chili' : u'Chileens',
        u'China' : u'Chinees',
        u'Volksrepubliek China' : u'Chinees',
        u'Christmaseiland' : u'Christmaseilands',
        u'Colombia' : u'Colombiaans',
        u'Comoren' : u'Comorees',
        u'Congo (Brazzaville)' : u'Congolees',
        u'Congo (Kinshasa)' : u'Congolees',
        u'Cookeilanden' : u'Cookeilands',
        u'Costa Rica' : u'Costa Ricaans',
        u'Cuba' : u'Cubaans',
        u'Curaçao' : u'Curaçaos',
        u'Cyprus' : u'Cypriotisch',
        u'Denemarken' : u'Deens',
        u'Djibouti' : u'Djiboutiaans',
        u'Dominica' : u'Dominicaans',
        u'Dominicaanse Republiek' : u'Dominicaans',
        u'Duitsland' : u'Duits',
        u'Ecuador' : u'Ecuadoraans',
        u'Egypte' : u'Egyptisch',
        u'Equatoriaal-Guinea' : u'Equatoriaal-Guinees',
        u'Eritrea' : u'Eritrees',
        u'Estland' : u'Estisch',
        u'Ethiopië' : u'Ethiopisch',
        u'Faeröer' : u'Faeröers',
        u'Falklandeilanden' : u'Falklandeilands',
        u'Fiji' : u'Fijisch',
        u'Filipijnen' : u'Filipijns',
        u'Finland' : u'Fins',
        u'Frankrijk' : u'Frans',
        u'Frans-Guyana' : u'Frans-Guyanees',
        u'Frans-Polynesië' : u'Frans-Polynesisch',
        u'Gabon' : u'Gabonees',
        u'Gambia' : u'Gambiaans',
        u'Georgië' : u'Georgisch',
        u'Ghana' : u'Ghanees',
        u'Gibraltar' : u'Gibraltarees',
        u'Grenada' : u'Grenadiaans',
        u'Griekenland' : u'Grieks',
        u'Groenland' : u'Groenlands',
        u'Guadeloupe' : u'Guadeloups',
        u'Guam' : u'Guamees',
        u'Guatemala' : u'Guatemalteeks',
        u'Guinee-Bissau' : u'Guinee-Bissaus',
        u'Guinee' : u'Guinees',
        u'Guyana' : u'Guyanees',
        u'Haïti' : u'Haïtiaans',
        u'Honduras' : u'Hondurees',
        u'Hongarije' : u'Hongaars',
        u'Hongkong' : u'Hongkongs',
        u'Ierland' : u'Iers',
        u'IJsland' : u'IJslands',
        u'India' : u'Indiaas',
        u'Indonesië' : u'Indonesisch',
        u'Iran' : u'Iraans',
        u'Irak' : u'Irakees',
        u'Israël' : u'Israëlisch',
        u'Italië' : u'Italiaans',
        u'Ivoorkust' : u'Ivoriaans',
        u'Jamaica' : u'Jamaicaans',
        u'Japan' : u'Japans',
        u'Jemen' : u'Jemenitisch',
        u'Jordanië' : u'Jordaans',
        u'Caymaneilanden' : u'Kaaimaneilands',
        u'Kaaimaneilanden' : u'Kaaimaneilands',
        u'Kaapverdië' : u'Kaapverdiaans',
        u'Kameroen' : u'Kameroens',
        u'Kazachstan' : u'Kazachs',
        u'Kenia' : u'Keniaans',
        u'Kenya' : u'Keniaans',
        u'Kirgistan' : u'Kirgizisch',
        u'Kirgizië' : u'Kirgizisch',
        u'Kiribati' : u'Kiribatisch',
        u'Koeweit' : u'Koeweits',
        u'Kosovo' : u'Kosovaars',
        u'Kroatië' : u'Kroatisch',
        u'Laos' : u'Laotiaans',
        u'Lesotho' : u'Lesothaans',
        u'Letland' : u'Lets',
        u'Libanon' : u'Libanees',
        u'Liberia' : u'Liberiaans',
        u'Libië' : u'Libisch',
        u'Liechtenstein' : u'Liechtensteins',
        u'Litouwen' : u'Litouws',
        u'Luxemburg' : u'Luxemburgs',
        u'Macau' : u'Macaus',
        u'Macedonië' : u'Macedonisch',
        u'Madagaskar' : u'Malagassisch',
        u'Malawi' : u'Malawisch',
        u'Maldiven' : u'Maledivisch',
        u'Malediven' : u'Maledivisch',
        u'Maleisië' : u'Maleisisch',
        u'Mali' : u'Malinees',
        u'Malta' : u'Maltees',
        u'Man' : u'Manx',
        u'Noordelijke Marianen' : u'Mariaans',
        u'Marokko' : u'Marokkaans',
        u'Marshalleilanden' : u'Marshalleilands',
        u'Martinique' : u'Martinikaans',
        u'Mauritanië' : u'Mauritaans',
        u'Mauritius' : u'Mauritiaans',
        u'Mexico' : u'Mexicaans',
        u'Micronesia' : u'Micronesisch',
        u'Moldavië' : u'Moldavisch',
        u'Monaco' : u'Monegaskisch',
        u'Mongolië' : u'Mongolisch',
        u'Montenegro' : u'Montenegrijns',
        u'Montserrat' : u'Montserrataans',
        u'Mozambique' : u'Mozambikaans',
        u'Namibië' : u'Namibisch',
        u'Nauru' : u'Nauruaans',
        u'Koninkrijk der Nederlanden' : u'Nederlands',
        u'Nederland' : u'Nederlands',
        u'Nepal' : u'Nepalees',
        u'Nicaragua' : u'Nicaraguaans',
        u'Nieuw-Caledonië' : u'Nieuw-Caledonisch',
        u'Nieuw-Zeeland' : u'Nieuw-Zeelands',
        u'Niger' : u'Nigerees',
        u'Nigeria' : u'Nigeriaans',
        u'Noord-Korea' : u'Noord-Koreaans',
        u'Noorwegen' : u'Noors',
        u'Norfolk' : u'Norfolkeilands',
        u'Oeganda' : u'Oegandees',
        u'Uganda' : u'Oegandees',
        u'Oekraïne' : u'Oekraïens',
        u'Oezbekistan' : u'Oezbeeks',
        u'Oman' : u'Omaans',
        u'Duitse Democratische Republiek' : u'Oost-Duits',
        u'Oost-Timor' : u'Oost-Timorees',
        u'Oostenrijk' : u'Oostenrijks',
        u'Pakistan' : u'Pakistaans',
        u'Palau' : u'Palaus',
        u'Palestina' : u'Palestijns',
        u'Panama' : u'Panamees',
        u'Papoea-Nieuw-Guinea' : u'Papoea-Nieuw-Guinees',
        u'Paraguay' : u'Paraguayaans',
        u'Peru' : u'Peruaans',
        u'Pitcairneilanden' : u'Pitcairneilands',
        u'Polen' : u'Pools',
        u'Portugal' : u'Portugees',
        u'Porto Rico' : u'Puerto Ricaans',
        u'Puerto Rico' : u'Puerto Ricaans',
        u'Qatar' : u'Qatarees',
        u'Réunion' : u'Réunions',
        u'Roemenië' : u'Roemeens',
        u'Rusland' : u'Russisch',
        u'Sovjet-Unie' : u'Russisch',
        u'Rwanda' : u'Rwandees',
        u'Saint Lucia' : u'Saint Luciaans',
        u'Salomonseilanden' : u'Salomonseilands',
        u'El Salvador' : u'Salvadoraans',
        u'Samoa' : u'Samoaans',
        u'San Marino' : u'San Marinees',
        u'Sao Tomé en Principe' : u'Santomees',
        u'Saoedi-Arabië' : u'Saoedi-Arabisch',
        u'Saudi-Arabië' : u'Saoedi-Arabisch',
        u'Senegal' : u'Senegalees',
        u'Servië' : u'Servisch',
        u'Seychellen' : u'Seychels',
        u'Sierra Leone' : u'Sierra Leoons',
        u'Singapore' : u'Singaporees',
        u'Sint-Helena' : u'Sint-Heleens',
        u'Sint-Maarten (Nederland)' : u'Sint-Maartens',
        u'Slovenië' : u'Sloveens',
        u'Slovakije' : u'Slowaaks',
        u'Slowakije' : u'Slowaaks',
        u'Soedan' : u'Soedanees',
        u'Sudan' : u'Soedanees',
        u'Somalië' : u'Somalisch',
        u'Spanje' : u'Spaans',
        u'Sri Lanka' : u'Sri Lankaans',
        u'Suriname' : u'Surinaams',
        u'Swaziland' : u'Swazisch',
        u'Syrië' : u'Syrisch',
        u'Tadzjikistan' : u'Tadzjieks',
        u'Taiwan' : u'Taiwanees',
        u'Tanzania' : u'Tanzaniaans',
        u'Thailand' : u'Thais',
        u'Togo' : u'Togolees',
        u'Tokelau' : u'Tokelaus',
        u'Tonga' : u'Tongaans',
        u'Tsjaad' : u'Tsjadisch',
        u'Tsjechië' : u'Tsjechisch',
        u'Tunesië' : u'Tunesisch',
        u'Turkmenistan' : u'Turkmeens',
        u'Turkije' : u'Turks',
        u'Tuvalu' : u'Tuvaluaans',
        u'Uruguay' : u'Uruguayaans',
        u'Vanuatu' : u'Vanuatuaans',
        u'Vaticaanstad' : u'Vaticaans',
        u'Venezuela' : u'Venezolaans',
        u'Verenigd Koninkrijk van Groot-Brittannië en Ierland' : u'Brits',
        u'Vietnam' : u'Vietnamees',
        u'Belarus' : u'Wit-Russisch',
        u'Wit-Rusland' : u'Wit-Russisch',
        u'Zambia' : u'Zambiaans',
        u'Zimbabwe' : u'Zimbabwaans',
        u'Zuid-Afrika' : u'Zuid-Afrikaans',
        u'Zuid-Korea' : u'Zuid-Koreaans',
        u'Zuid-Soedan' : u'Zuid-Soedanees',
        u'Zuid-Sudan' : u'Zuid-Soedanees',
        u'Zweden' : u'Zweeds',
        u'Zwitserland' : u'Zwitsers',
        u'' : u'',
        }
    demonym = switcher.get(CountryName,"")
    if demonym=="": 
        return (Occupation+' uit '+CountryName).strip()
    else:
        return demonym.strip()+' '+Occupation

    

def HaalPersoonsgegevens(naam):
        page = pywikibot.Page(site, naam)
        if page == None:
            exit
#    print (page, site, naam)
#    try:
        item = pywikibot.ItemPage.fromPage(page)
      
        if item.claims:
            if 'P31' in item.claims: # instance of
                LNKartist = item.claims.get(is_eenCLAIM)[0].getTarget()
                WDIartist=pywikibot.ItemPage(repo,LNKartist.title())
                WDIartist.get(get_redirect=True)
                if (lng in WDIartist.labels):
                    if WDIartist.labels[lng] == u'mens':
                        achternaam = get_text_for_claim(item, achternaamCLAIM)
                        prnCountry = get_text_for_claim(item, nationaliteitCLAIM)
                        if prnCountry == u'':
                            prnCountry = get_text_for_claim(item, geboortelandCLAIM)                           
                        prnOccupation= GetBeroep(item)                     
                        print ( 'Naam:', naam )
                        print ( 'Achternaam:', achternaam)
                        print ( 'Beroep:', prnOccupation)
                        print ( 'Geboorteland:', prnCountry)
                        omschrijving = nameofcitizenship(prnCountry,prnOccupation) 
                        print ( 'Omschrijving:', omschrijving)
                        if omschrijving[0:3]==u'uit' or omschrijving[:-3]==u'uit':
                            omschrijving = LNKartist.descriptions['nl']
                        print ( 'Omschrijving:', omschrijving)
                        
                        row = [naam, achternaam, geboortejaarstr, geboortemaandstr, geboortedagstr,
                               sterfjaarstr, sterfmaandstr, sterfdagstr, prnOccupation, prnCountry, omschrijving] 
#    except:
#        print ('Fout bij verwerking:', naam)
        
HaalPersoonsgegevens('Arnout Coninx')        
Naam: Arnout Coninx
Achternaam: Coninx
Beroep: uitgever
Geboorteland: 
Omschrijving: uitgever uit
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-9-a16aa55b44a9> in <module>()
    334 #        print ('Fout bij verwerking:', naam)
    335 
--> 336 HaalPersoonsgegevens('Arnout Coninx')

<ipython-input-9-a16aa55b44a9> in HaalPersoonsgegevens(naam)
    326                         print ( 'Omschrijving:', omschrijving)
    327                         if omschrijving[0:3]==u'uit' or omschrijving[:-3]==u'uit':
--> 328                             omschrijving = LNKartist.descriptions['nl']
    329                         print ( 'Omschrijving:', omschrijving)
    330 

/srv/paws/pwb/pywikibot/page.py in __getattribute__(self, name)
   3812                 since='20150607')
   3813             name = '_revid'
-> 3814         return super(WikibasePage, self).__getattribute__(name)
   3815 
   3816     def __setattr__(self, attr, value):

AttributeError: 'ItemPage' object has no attribute 'descriptions'