在 Python 中从维基数据中提取数据
Extract data from Wikidata in Python
使用以下代码可以从维基数据中的实体中提取数据:
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])
输出为:
{'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'}}
但是转到 concepturi 'http://www.wikidata.org/entity/Q52 我在 json 文件中看到的信息比报告的更多,特别是我对 座右铭文字领域.
如何从维基数据中获取更多信息? (这是一个可以显示的更多示例,其中查询输出的信息少于维基数据中包含的信息)。
你可以使用 wikidata python 模块 qwikidata
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"])
使用以下代码可以从维基数据中的实体中提取数据:
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])
输出为:
{'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'}}
但是转到 concepturi 'http://www.wikidata.org/entity/Q52 我在 json 文件中看到的信息比报告的更多,特别是我对 座右铭文字领域.
如何从维基数据中获取更多信息? (这是一个可以显示的更多示例,其中查询输出的信息少于维基数据中包含的信息)。
你可以使用 wikidata python 模块 qwikidata
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"])