首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python从Wikidata中提取数据

用Python从Wikidata中提取数据
EN

Stack Overflow用户
提问于 2018-07-19 10:04:22
回答 1查看 9.6K关注 0票数 4

使用以下代码,可以从Wikidata中的实体中提取数据:

代码语言:javascript
复制
import requests

API_ENDPOINT = "https://www.wikidata.org/w/api.php"

query = "wikipedia"

params = {
    'action': 'wbsearchentities',
    'format': 'json',
    'language': 'en',
    'search': query
}

r = requests.get(API_ENDPOINT, params = params)

print(r.json()['search'][0])

产出如下:

代码语言:javascript
复制
{'repository': '', 'id': 'Q52', 'concepturi': 'http://www.wikidata.org/entity/Q52', 'title': 'Q52', 'pageid': 170, 'url': '//www.wikidata.org/wiki/Q52', 'label': 'Wikipedia', 'description': 'free online encyclopedia that anyone can edit', 'match': {'type': 'label', 'language': 'en', 'text': 'Wikipedia'}}

但是,在概念化 'http://www.wikidata.org/entity/Q52中,我在json文件中看到的信息比这里所报道的要多,特别是我对座右铭文本字段感兴趣。

我怎么能从维基数据中得到更多的信息?(这是一个更多的例子,查询输出的信息比包含在维基数据中的信息少)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-25 17:31:23

您可以使用wikidata python模块qwikidata

代码语言:javascript
复制
from qwikidata.sparql  import return_sparql_query_results

query_string = """
        SELECT $WDid
         WHERE {
          ?WDid (wdt:P279)* wd:Q4022
        }"""

res = return_sparql_query_results(query_string)

for row in res["results"]["bindings"]:
   print(row["yourFieldName"]["value"])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51419785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档