1

我正在寻找一种方法来找出具有特定标签和描述的项目是否已经存在于 Wikidata 上。此任务应由 Pywikibot 执行。如果它已经存在,我不希望我的 Bot 创建一个新项目。到目前为止,我的代码如下所示:

...                
def check_item_existence(self):
    transcript_file = self.transcript_file
    with open(transcript_file) as csvfile:
        transcript_dict = csv.DictReader(csvfile, delimiter="\t")
        for row in transcript_dict:
            site = pywikibot.Site("en", "TillsWiki")
            existing_item = pywikibot.ItemPage(site, row['Name'])
            title = existing_item.title()
4

1 回答 1

1

您可以使用 Wikibase API 中的 wbsearchentities api模块。检查WikiData中是否存在任何带有特定英文标签的项目的代码是:

from pywikibot.data import api
...
def wikiitemexists(label):
    params = {'action': 'wbsearchentities', 'format': 'json',
              'language': 'en', 'type': 'item', 'limit':1,
              'search': label}
    request = api.Request(site=acta_site, **params)
    result = request.submit()
    return True if len(result['search'])>0 else False

请注意,Wikidata 中的标签不是唯一的,API 也会搜索别名。

于 2017-07-12T06:53:54.533 回答