Python遍历api并将多个对象作为元组附加到列表

时间:2019-07-05 23:12:47

标签: python json list loops tuples

我正在尝试遍历api的所有页面并获取多个json对象,并将它们作为元组存储在列表中,并返回最终列表

这仅适用于1个对象,但是一旦我开始添加多个对象,我就无法使其正常工作。我尝试了各种调整并将其更改为while循环,但似乎无法正常工作

def star_wars_characters(url):
    all_names1 = []
    response1 = requests.get(url)
    data1 = response1.json()

    for x in data1['results']:
        all_names1.append(x['name'])


    while data1['next'] is not None:
        response1 = requests.get(data1['next'])
        data1 = response1.json()

        for x in data1['results']:
            all_names1.append(x['name'])

    return all_names1


print(star_wars_characters("https://swapi.co/api/people/?page=1"))

我正在尝试实现以下所有页面的输出。这只是第一页的结果,我设法通过将for循环更改为while来返回,但无法获取剩余的数据页:

[('Luke Skywalker', '77'), ('C-3PO', '75'), ('R2-D2', '32'), ('Darth Vader', '136'), ('Leia Organa', '49'), ('Owen Lars', '120'), ('Beru Whitesun lars', '75'), ('R5-D4', '32'), ('Biggs Darklighter', '84'), ('Obi-Wan Kenobi', '77')]

1 个答案:

答案 0 :(得分:2)

import requests

def star_wars_characters(url):
    return_data = []

    response = requests.get(url)
    data = response.json()

    while True:    
        for result in data['results']:
            return_data.append((result['name'], result['mass']))

        if data['next'] is None:
            break

        response = requests.get(data['next'])
        data = response.json()

    return return_data

print(star_wars_characters("https://swapi.co/api/people/?page=1"))