Руководство:Pywikibot/Wikidata
В этом разделе объясняется, как создать ботов на основе Викиданных с использованием базовой библиотеки pywikibot.
Если вы просто хотите запускать какие-то скрипты без написания кода на Python, см. доступные Wikidata-скрипты.
Предупреждение: | Методы и результаты могут быть изменены в будущем, поскольку Wikibase постоянно изменяется. |
Pywikibot поддерживает объекты с лексическими данными, такие как Лексемы, начиная с версии 7.2 и выше.
Настройка
Чтобы начать вносить вклад/тестировать с помощью учётной записи вашего бота, вы должны добавить следующие строки в ваш user-config.py :
- Работающий сайт
usernames['wikidata']['wikidata'] = 'YourBot'
- Тестовый сайт
usernames['wikidata']['test'] = 'YourBot'
Пример
См. Создание бота для получения дополнительной информации. pywikibot ядро уже поддерживает большинство функций Wikibase, например, квалификаторы, источники, свойства элемента, координат, времени, и строковый тип.
import pwb # нужно только если вы не установили фреймворк в качестве стороннего пакета
import pywikibot
site = pywikibot.Site('wikipedia:en') # какой-нибудь другой сайт будет работать, это лишь пример
page = pywikibot.Page(site, 'Douglas Adams')
item = pywikibot.ItemPage.fromPage(page) # это может быть использовано для какой-либо страницы-объекта
# вы также можете обозначить элемент так
repo = site.data_repository() # это объект ''DataSite''
item = pywikibot.ItemPage(repo, 'Q42') # Это будет функционировать так же, как и другой предмет, который мы определили
item.get() # вам нужно вызвать его для доступа к каким-либо данным
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]) # давайте удостоверимся, что это имеет источники
# Измените существующий элемент
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')
# Вы также можете сделать всё это в одно и то же время:
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')
См. также
- Скрипты для Викиданных
- Wikidata:Creating a bot
- Wikidata:Pywikibot - Python 3 Tutorial
- How to interact with Wikidata via Pywikibot - a workshop by User:Mike Peel
Примеры некоторых ботов
- Пример кода pywikibot авторства User:Mike Peel
- Коллекция ботов Wikidata авторства User:Multichill
- If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel подключиться or pywikibot@ mailing list.