Handbuch:Pywikibot/Wikidata
Diese Seite erklärt, wie man Python-Bots in Wikidata unter Nutzung der grundlegenden Pywikibot-Bibliothek erstellt.
Wenn du nur ein paar Skripte ausführen möchtest, ohne eine Zeile in Python zu schreiben, siehe die eingebundenen Wikidata-Skripte.
Achtung: | Diese Methoden und Ergebnisse können dich mit der Entwicklung von Wikidata in der Zukunft ändern. |
Pywikibot unterstützt lexikalischen Datenobjekte wie Lexeme mit Version 7.2 und höher.
Konfiguration
Um damit zu beginne, dein Bot-Konto zu nutzen oder zu testen, musst du folgendes zu deiner user-config.py hinzufügen:
- Produktionsseite
usernames['wikidata']['wikidata'] = 'YourBot'
- Testseite
usernames['wikidata']['test'] = 'YourBot'
Beispiel
siehe Wikidata:Wie man einen Bot erstellt für eine umfangreichere Dokumentation. Der Pywikibot-Kern unterstützt bereits die meisten Wikibase-Funktionen, z.B. Qualifikatoren, Fundstellen, Eigenschaften mit Datenobjekt, Koordinaten, Zeit und Zeichenketten-Typ.
import pwb # nur nötig, wenn du das Framework nicht als Zusatzpaket installiert hast
import pywikibot
site = pywikibot.Site('wikipedia:en') # jede Seite wird funktionieren, dies ist nur ein Beispiel
page = pywikibot.Page(site, 'Douglas Adams')
item = pywikibot.ItemPage.fromPage(page) # dies kann für jedes Seiten-Objekt genutzt werden
# du kannst auch so ein Datenobjekt definieren
repo = site.data_repository() # dies ist ein DataSite-Objekt
item = pywikibot.ItemPage(repo, 'Q42') # Dies wird funktional das gleiche sein, wie das andere Datenobjekt, das wir definiert haben
item.get() # Du musst es anrufen, um auf Daten zuzugreifen
sitelinks = item.sitelinks
aliases = item.aliases
if 'en' in item.labels:
print('The label in English is: ' + item.labels['en'])
if item.claims:
if 'P31' in item.claims: # instance of
print(item.claims['P31'][0].getTarget())
print(item.claims['P31'][0].sources[0]) # lass uns annehmen, dass es Fundstellen gibt
# Ein existierendes Datenobjekt bearbeiten
item.editLabels(labels={'en': 'Douglas Adams'}, summary='Edit label')
item.editDescriptions(descriptions={'en': 'English writer'}, summary='Edit description')
item.editAliases(aliases={'en': ['Douglas Noel Adams', 'another alias']})
item.setSitelink(sitelink={'site': 'enwiki', 'title': 'Douglas Adams'}, summary='Set sitelink')
item.removeSitelink(site='enwiki', summary='Remove sitelink')
# Du kannst all dies auch auf einmal machen:
data = {'labels': {'en': 'Douglas Adams'},
'descriptions': {'en': 'English writer'},
'aliases': {'en': ['Douglas Noel Adams', 'another alias'], 'de': ['Douglas Noel Adams']},
'sitelinks': [{'site': 'enwiki', 'title': 'Douglas Adams'}]}
item.editEntity(data, summary='Edit item')
Siehe auch
- Wikidata-Skripte
- Wikidata:Creating a bot
- Wikidata:Pywikibot - Python 3 Tutorial
- How to interact with Wikidata via Pywikibot - a workshop by User:Mike Peel
Einige Bot-Beispiele
- If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel connect or pywikibot@ mailing list.