In [1]:
import pywikibot
from bs4 import BeautifulSoup
import urllib.request
import re
# Connect to enwiki
enwiki = pywikibot.Site('en', 'wikipedia')
# and then to wikidata
enwiki_repo = enwiki.data_repository()
In [2]:
def print_demoauthorname(list_item):
    
    site = pywikibot.Site("wikidata", "wikidata")
    repo = site.data_repository()
    
    i_list = []
    for data_item in list_item:
        item = pywikibot.ItemPage(repo, data_item) 
        #item_dict = item.get()
    
        for source in item.claims['P50']:
            tt = list(source.qualifiers.items())
            for key, value in tt:
                if key == 'P1545':
                    QID = source.target.getID()
                    item1 = pywikibot.ItemPage(repo, QID) 
                    item_dict1 = item1.get()
                    try:
                        item_new = item_dict1['claims']['P735']
                        for item1_new in item_new:
                            itemm = item1_new.target.getID()
                            QID1 = pywikibot.ItemPage(repo, itemm) 
                            name = QID1.get()
                            try:
                                item_new1 = item_dict1['claims']['P734']
                                for item1_new1 in item_new1:
                                    itemm1 = item1_new1.target.getID()
                                    QID2 = pywikibot.ItemPage(repo, itemm1) 
                                    name1 = QID2.get()
                                    m_list = name['labels']['en'] + ', ' + name1['labels']['en']
                                    i_list.append(m_list)
                            except:
                                print('No Family name')
                    except:
                        print('No Given name')
                    
                    
    return i_list

print_demoauthorname(['Q56603075'])
Out[2]:
['Keith, Vanderlinde', 'P., Ade', 'Peter, Ade']
In [28]:
#This function ensures the claim without a series ordinal is not included 

def print_claim1(list_item):
    
    site = pywikibot.Site("wikidata", "wikidata")
    repo = site.data_repository()
    
    state = []
    for data_item in list_item:
        item = pywikibot.ItemPage(repo, data_item) 
        item_dict = item.get()
    
        for claim in item_dict['claims']['P50']: # Loop through items
            nu = claim.qualifiers.items()
            for t, y in nu:
                if t == 'P1545':
                    state.append(claim)
    return state
                
print_claim1(['Q56603075'])
Out[28]:
[Claim.fromJSON(DataSite("wikidata", "wikidata"), {'mainsnak': {'snaktype': 'value', 'property': 'P50', 'datatype': 'wikibase-item', 'datavalue': {'value': {'entity-type': 'item', 'numeric-id': 104918685}, 'type': 'wikibase-entityid'}}, 'type': 'statement', 'id': 'Q56603075$344F9367-2374-4385-BE93-577EC415EAD9', 'rank': 'normal', 'qualifiers': {'P1545': [{'snaktype': 'value', 'property': 'P1545', 'datatype': 'string', 'datavalue': {'value': '41', 'type': 'string'}, 'hash': 'b4281260d750497fff3ee3f3a7ab594ce99643d4'}], 'P1932': [{'snaktype': 'value', 'property': 'P1932', 'datatype': 'string', 'datavalue': {'value': 'K. Vanderlinde', 'type': 'string'}, 'hash': '2e2e4bbec6f4d51fb6cee0930cb4a5c958885454'}], 'P9688': [{'snaktype': 'value', 'property': 'P9688', 'datatype': 'string', 'datavalue': {'value': 'Vanderlinde', 'type': 'string'}, 'hash': '72f4a7b0c3dcc5d06cbcfab49d533e4dc43c9e2f'}], 'P9687': [{'snaktype': 'value', 'property': 'P9687', 'datatype': 'string', 'datavalue': {'value': 'K.', 'type': 'string'}, 'hash': 'eb3c6aff6ac828f67147786632e4b29904c1fc24'}]}, 'qualifiers-order': ['P1545', 'P1932', 'P9688', 'P9687']}),
 Claim.fromJSON(DataSite("wikidata", "wikidata"), {'mainsnak': {'snaktype': 'value', 'property': 'P50', 'datatype': 'wikibase-item', 'datavalue': {'value': {'entity-type': 'item', 'numeric-id': 53986456}, 'type': 'wikibase-entityid'}}, 'type': 'statement', 'id': 'Q56603075$0B9DA8AA-303B-40A8-BB83-AB1DD0028CE3', 'rank': 'normal', 'qualifiers': {'P1545': [{'snaktype': 'value', 'property': 'P1545', 'datatype': 'string', 'datavalue': {'value': '2', 'type': 'string'}, 'hash': '7241753c62a310cf84895620ea82250dcea65835'}], 'P1932': [{'snaktype': 'value', 'property': 'P1932', 'datatype': 'string', 'datavalue': {'value': 'P. A. R. Ade', 'type': 'string'}, 'hash': '459a8aab0bd3db5ac66145819f8f9a35a99c6785'}], 'P9688': [{'snaktype': 'value', 'property': 'P9688', 'datatype': 'string', 'datavalue': {'value': 'Ade', 'type': 'string'}, 'hash': '7a0bae8dc90b5033a59b81127668b2939344652a'}], 'P9687': [{'snaktype': 'value', 'property': 'P9687', 'datatype': 'string', 'datavalue': {'value': 'P. A. R.', 'type': 'string'}, 'hash': '0ab4889b886fe80f6f1c5435fe105643461ae950'}]}, 'qualifiers-order': ['P1545', 'P1932', 'P9688', 'P9687']})]
In [80]:
def print_authorname(list_item):
    
    site = pywikibot.Site("wikidata", "wikidata")
    repo = site.data_repository()
    
    i_list = []
    for data_item in list_item:
        item = pywikibot.ItemPage(repo, data_item) 
        #item_dict = item.get()
    
        for source in item.claims['P50']:
            tt = list(source.qualifiers.items())
            for key, value in tt:
                if key == 'P1545':
                    QID = source.target.getID()
                    item1 = pywikibot.ItemPage(repo, QID) 
                    item_dict1 = item1.get()
                    #te = item_dict1['claims']['P735']
                    #print(te)
                    #print(QID)
                    print('\n')
                    if 'P735' in item_dict1['claims']:
                        item_new = item_dict1['claims']['P735']
                        for item1_new in item_new:
                            itemm = item1_new.target.getID()
                            #add a for loop
                            QID1 = pywikibot.ItemPage(repo, itemm) 
                            name = QID1.get()
                            print(item_new[0].target.getID())
                            #print(itemm)
                            #print(name['labels']['en'])
                            
                            try:
                                item_new1 = item_dict1['claims']['P734']
                                for item1_new1 in item_new1:
                                    itemm1 = item1_new1.target.getID()
                                    QID2 = pywikibot.ItemPage(repo, itemm1) 
                                    name1 = QID2.get()
                                    #print(name1['labels']['en'])
                                    #print('------------')
                            except:
                                print('No Family name')
                    else:
                        print('No Given name')
                else:
                    continue
                    
    return i_list

print_authorname(['Q56942987'])

Q14516546


Q1159033


Q1084472
Q1084472


Q18218586
Out[80]:
[]
In [ ]: