【问题标题】:Json Parsing from API With Dicts使用字典从 API 解析 Json
【发布时间】:2026-02-14 09:45:02
【问题描述】:

我正在编写一段代码来从英雄联盟 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]”之类的条目建立索引时,出现以下错误:列表索引必须是整数或切片,而不是 str。

【问题讨论】:

    标签: json python-3.x api web-scraping python-requests


    【解决方案1】:

    我只需将条目中的字典列表转换为数据框。您的所有信息都井井有条,可以轻松访问特定项目,包括您的 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)
    

    【讨论】:

      【解决方案2】:

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

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

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

      创建一个新的字典列表,必须先提取这些字典才能直接引用['summonerName']

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

      你会明白我的意思

      【讨论】:

      • 哇。我之前很接近,我在范围内有一个 for 循环,但没有设置 300 的参数。叹。谢谢!