手册:Pywikibot/维基数据

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Pywikibot/Wikidata and the translation is 84% complete.

Other languages:
English • ‎Nederlands • ‎Tagalog • ‎dansk • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎čeština • ‎Ελληνικά • ‎български • ‎русский • ‎українська • ‎العربية • ‎中文 • ‎日本語 • ‎한국어

这个页面介绍了怎样用基本的pywikibot库在维基数据创建python机器人。

如果你想运行一些脚本却不想编写python程序,请参见自带的维基数据脚本

小心! 小心: 方法和结果可能随着Wikibase改进而在未来改变。

配置

你需要在user-config.py加入以下代码才能用你的机器人账号开始贡献/测试。

正式网站
usernames['wikidata']['wikidata'] = u'YourBot'
测试网站
usernames['wikidata']['test'] = u'YourBot'

示例

see d:Wikidata:Creating a bot for an extended documentation. pywikibot core supports most Wikibase features already, e.g., qualifiers, sources, properties with item, coordinate, time, and string type.

import pwb  # 只有在没有将框架安装为side-package时才需要
import pywikibot
site = pywikibot.Site('en', 'wikipedia')  # 任何网站都可以使用,这只是一个示例
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=u'Edit label')
item.editDescriptions(descriptions={'en': 'English writer'}, summary=u'Edit description')
item.editAliases(aliases={'en':['Douglas Noel Adams', 'another alias']})
item.setSitelink(sitelink={'site': 'enwiki', 'title': 'Douglas Adams'}, summary=u'Set sitelink')
item.removeSitelink(site='enwiki', summary=u'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=u'Edit item')


参见

Some bot examples


If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel 连接 or pywikibot@ mailing list.