Json Парсинг из API с Dicts - PullRequest
       26

Json Парсинг из API с Dicts

1 голос
/ 10 марта 2019

Я пишу фрагмент кода для получения определенной информации из API League of Legends.

У меня все работает нормально и печатаю на своей консоли, мне даже удалось получить доступ к данным и распечатать толькоинформация, которая мне нужна, единственная проблема в том, что есть 299 значений, которые я хотел бы распечатать, и я могу печатать только по одному за раз.Очевидно, это был бы худший способ разобраться в этом, так как написание программы заняло бы целую вечность.Я потратил более 3 дней на изучение и просмотр видео, но безуспешно.

Ниже приведен код, который у меня есть (без импорта).

url =('https://na1.api.riotgames.com/lol/league/v4/challengerleagues/by- 
queue/RANKED_SOLO_5x5?api_key=RGAPI-b5187110-2f16-48b4-8b0c-938ae5bddccb')
r = requests.get(url)
response_dict = r.json()
print(response_dict['entries'][0]['summonerName'])
print(response_dict['entries'][1]['summonerName']) 

Когда я пытаюсь индексировать записи типа '[0: 299]', я получаю следующую ошибку: список индексов долженбыть целыми числами или ломтиками, а не стр.

Ответы [ 2 ]

2 голосов
/ 10 марта 2019

Я бы просто преобразовал список словарей в записях в фрейм данных.У вас есть вся хорошо организованная информация, и вы можете легко получить доступ к определенным элементам, включая вашу колонку для summonerName.

import requests
from bs4 import BeautifulSoup as bs
import json
import pandas as pd
#url = yourURL
res = requests.get(url, headers = {'user-agent' : 'Mozilla/5.0'})
soup = bs(res.content, 'lxml')
data = json.loads(soup.select_one('p').text)
df = pd.DataFrame(data['entries'])
print(df)
0 голосов
/ 10 марта 2019

Вы можете перебрать индекс, который распечатает их все

for i in range(300):
    print(response_dict['entries'][i]['summonerName'])

При использовании response_dict['entries'][M:N]

Вы создаете новый список словарей, которые должны быть извлечены, прежде чем вы сможете ссылаться на ['summonerName'] напрямую

Если вы print(response_dict['entries'][0:3])

Вы поймете, что я имею в виду

...