Wikidata API wbsearchentities:为什么 Python 中的结果与 Wikidata 中的结果不同?

Pat*_*ick 5 python python-requests wikidata-api

我在 python 请求中使用 wbsearchentities (wikidata api),我想知道为什么返回的结果与 Wikidata 上看到的结果不同。例如,Python 中的以下命令:

url = "https://www.wikidata.org/w/api.php?action=wbsearchentities&search=%s&format=json&limit=50&formatversion=2&language=en" % ('New York Landmarks Preservation Commission')
r = requests.post(url,headers={"User-Agent" : "Magic Browser"})
Run Code Online (Sandbox Code Playgroud)

没有返回任何内容,但在维基数据的搜索框中进行相同的搜索会返回 2 个结果(其中一个是好的结果:纽约市地保护委员会。

理想情况下,我希望从我的 python 请求中返回所有这些结果。

Add*_*ore 3

维基数据右上角的搜索框使用 wbsearchentities API 模块提供自动建议下拉搜索。

如果您在输入搜索后按 Enter 键而不是单击其中一项建议,您最终将进入Special:Search页面。

正如您所看到的,他们的 API 结果没有返回结果,但特殊页面却返回了结果。

这是因为这些搜索以完全不同的方式进行。

  • Special:Search 页面是 Wikibase 为其提供数据的 MediaWiki 概念。
  • wbsearchentities API 模块由 Wikibase 本身提供。

  • 请参阅action=query&list=search https://www.wikidata.org/w/api.php?action=query&list=search&srsearch=New%20York%20Landmarks%20Preservation%20Commission (2认同)