Json从API与Dicts解析

问题描述 投票:1回答:2

我正在写一段代码来从英雄联盟api中检索某些信息。

我有一切正常工作并打印到我的控制台,我甚至设法访问数据并仅打印出我需要的信息,唯一的问题是有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]'这样的条目时,我得到以下错误:list indices必须是整数或切片,而不是str。

json python-3.x api web-scraping python-requests
2个回答
0
投票

你可以遍历索引,将它们全部打印出来

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

当你使用response_dict['entries'][M:N]

您可以创建一个新的字典列表,在您直接引用['summonerName']之前必须将其提取出来

如果你print(response_dict['entries'][0:3])

你会明白我的意思


2
投票

我只是将条目中的字典列表转换为数据帧。您可以很好地组织所有信息,并且可以轻松访问特定项目,包括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)
© www.soinside.com 2019 - 2024. All rights reserved.