Python通过api循环并将多个对象作为元组附加到lis中

2024-04-20 10:53:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这只适用于一个对象,但一旦我开始添加多个对象,它就无法工作。我尝试了各种各样的调整和改变,虽然循环,但似乎无法得到工作

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')]

Tags: 对象apijsonurl列表for页面all
1条回答
网友
1楼 · 发布于 2024-04-20 10:53:25
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"))

相关问题 更多 >