Python 如何从WikiData中获取属性-值

Python 如何从WikiData中获取属性-值,python,libraries,wikidata,Python,Libraries,Wikidata,我在使用Python库从WikiData获取信息时遇到问题 我正在尝试基于WikiData页面的ID获取数据,例如“Q2”(地球) 我正在考虑使用dict来存储通信[name property]->[list of values],但现在我只是打印它们 我正在使用并设法从中获得一些结果,但有些情况我不知道如何处理 特别是我在从一个适当的地方获取多个值时遇到了问题,我求助于硬编码,我认为这不是最好的方法 我使用的库似乎比我使用的代码更复杂,因此我可能错过了库提供的一个明显的解决方案 这是我目前拥有

我在使用Python库从WikiData获取信息时遇到问题

我正在尝试基于WikiData页面的ID获取数据,例如“Q2”(地球)

我正在考虑使用dict来存储通信[name property]->[list of values],但现在我只是打印它们

我正在使用并设法从中获得一些结果,但有些情况我不知道如何处理

特别是我在从一个适当的地方获取多个值时遇到了问题,我求助于硬编码,我认为这不是最好的方法

我使用的库似乎比我使用的代码更复杂,因此我可能错过了库提供的一个明显的解决方案

这是我目前拥有的代码

import wikidata

idd = "Q2" # Earth
client = wikidata.client.Client()
entity = client.get(idd, load = True)
    for x in (list(entity)): # Iterate over properties
        prop = client.get(x.id, load = True)
        print("\nPropriety ID:\t" + str(x.id) + "\tPropriety NAME:\t" + str(prop.label))

        try:
            if type(entity[prop]) is wikidata.entity.Entity:
                print(entity[prop].label)
            else:
                print(entity[prop])
        except Exception as e:
            try:
                param = str(e).split("unsupported type: ")[1].replace("'",'"')
                d = json.loads(param)
                print(d["value"]["amount"])
            except:
                print (e)

我很感激任何关于如何从单一的礼节或其他方式中获得多重价值的建议,以达到我的目的

也许最明显的方法是用SPARQL(使用)检索数据,并用RDF(使用)存储数据。@StanislavKralin似乎是一个非常好的建议!我来试试:)谢谢