我正在寻找一种方法,以查找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()
最佳答案
您可以使用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也会搜索别名。
关于python - 通过Pywikibot检查Wikidata上是否已经存在带有特定标签和描述的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36406862/