1

我正在使用 pywikibot 在 Python 中创建一个半自动化工具,以将数据从 TOP500 数据库导入 Wikidata,遵循教程和教程。(是我第一次用 Python 编程)。

它运行良好,直到脚本尝试在一个单位内提交一个数值(例如,Pleiades ( Q2442043)功耗 (P2791) → 4407.00 kW)。该脚本解析单位内的数值,然后将单位转换为给定的语句(kWkW(Q3320608)。但是,当将单元作为 URL(实体帮助器字符串)和语句(QXXXXX)传递时,脚本会引发错误(这是一个警告,因为我正在使用 try-except 处理错误):

WARNING: API error modification-failed: Illegal value: https://wikidata.org/wiki/Q79738
Traceback (most recent call last):
  File "/mnt/c/Users/Davod/Documents/git/wikidata_top500/core/pywikibot/page.py", line 112, in handle
    func(self, *args, **kwargs)
  File "/mnt/c/Users/Davod/Documents/git/wikidata_top500/core/pywikibot/page.py", line 4325, in addClaim
    self.repo.addClaim(self, claim, bot=bot, **kwargs)
  File "/mnt/c/Users/Davod/Documents/git/wikidata_top500/core/pywikibot/site.py", line 1326, in callee
    return fn(self, *args, **kwargs)
  File "/mnt/c/Users/Davod/Documents/git/wikidata_top500/core/pywikibot/site.py", line 7946, in addClaim
    data = req.submit()
  File "/mnt/c/Users/Davod/Documents/git/wikidata_top500/core/pywikibot/data/api.py", line 2080, in submit
    raise APIError(**result['error'])
pywikibot.data.api.APIError: modification-failed: Illegal value: https://wikidata.org/wiki/Q79738 [messages:[{'name': 'wikibase-validator-not-allowed', 'parameters': ['https://wikidata.org/wiki/Q79738'], 'html': {'*': 'Valor ilegal: <a class="external free" href="https://wikidata.org/wiki/Q79738">https://wikidata.org/wiki/Q79738</a>'}}]; help:See https://www.wikidata.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt; for notice of API deprecations and breaking changes.]

我将我的项目上传到 GitHub。相关源代码可在addClaim()函数109 行找到。

4

0 回答 0