#python #json
#python #json
Вопрос:
Я использую [wikipedia API][1]
, который возвращает следующий JSON для страницы Президентские выборы в США 2016 года
Что я пытаюсь сделать, так это получить значение под ключом extract
. Трудность, с которой я сталкиваюсь, заключается в том, что значение страницы (в этом примере as 21377251
) изменяется для каждой страницы. В настоящее время у меня есть функция, как показано ниже.
Функция
def fetchSummary(self, title):
url = ("https://en.wikipedia.org/w/api.php?format=jsonamp;origin=*amp;action=queryamp;prop=extractsamp;explaintext=falseamp;exintroamp;titles=" title)
print(url)
response = requests.get(url)
data = response.json()
print(data['query'].['pages'])
return()
Вывод JSON из ссылки
{
'batchcomplete': '',
'query': {
'pages': {
'21377251': {
'pageid': 21377251,
'ns': 0,
'title': '2016 United States presidential election',
'extract': 'The 2016 United States presidential election was the 58th quadrennial presidential election, ....Russian government".'
}
}
}
}
Ответ №1:
Если каждый раз есть только один ключ, вы можете просто извлечь номер страницы следующим образом:
page = list(data['query']['pages'])[0]
print(data['query']['pages'][page]['extract'])
Если их несколько, вы можете просто получить список с помощью keys(), а затем выполнить их цикл следующим образом:
pages = list(data['query']['pages'].keys())
for page in pages:
print(data['query']['pages'][page]['extract'])
Ответ №2:
Как только у вас будет JSON, вы можете извлечь номер страницы, а затем использовать его для дальнейшего поиска и извлечения извлечения.
def fetchSummary(self, title):
url = (
"https://en.wikipedia.org/w/api.php?format=jsonamp;origin=*amp;action=queryamp;"
"prop=extractsamp;explaintext=falseamp;exintroamp;titles="
title
)
print(url)
response = requests.get(url)
data = response.json()
pg = list(data['query']['pages'])[0]
extract = data['query']['pages'][pg]['extract']
return extract
Ответ №3:
Если это всегда одна страница:
list(data["query"]["pages"].values())[0]["extract"]
Если он может содержать несколько страниц:
for val in data["query"]["pages"].values():
print(val["extract"])