Python Requests调用API分页仅保存最后一页数据的问题解决
解决分页API调用中ID列表仅保留最后一页的问题
问题出在你循环时对列表的操作方式——每次都直接给列表变量赋值,而不是追加新内容,导致之前分页的ID被覆盖,最终只剩最后一页的数据。
错误代码示例(模拟你的问题)
import requests # 错误:每次循环覆盖列表内容 id = [] for page in range(3): resp = requests.get(f"https://your-api-url.com?page={page}") data = resp.json() id = data["ids"] # 这里是赋值,直接替换了整个列表 print(id) # 仅输出最后一页的ID
修正后的代码
import requests # 初始化空列表,用all_ids避免和Python内置函数id()冲突 all_ids = [] for page in range(3): resp = requests.get(f"https://your-api-url.com?page={page}") data = resp.json() current_ids = data["ids"] all_ids.extend(current_ids) # 把当前页的ID逐个追加到总列表 # 等价写法:all_ids += current_ids print(all_ids) # 输出合并后的所有分页ID
关键说明
- 用extend()而非赋值:
extend()会把当前页的ID列表中的每个元素添加到总列表末尾,而赋值操作会直接替换整个列表,丢失之前的数据。 - 避免使用内置函数名当变量:
id是Python内置函数(用于获取对象内存地址),改用all_ids这类自定义名称可以避免潜在冲突。
效果示例
假设各页返回的ID分别为:
- 第0页:
[101, 102, 103] - 第1页:
[104, 105] - 第2页:
[106, 107, 108]
修正后输出的all_ids为:[101, 102, 103, 104, 105, 106, 107, 108],符合合并所有分页ID的预期。
内容的提问来源于stack exchange,提问作者Henrique Ferraz
相关产品推荐
相关产品推荐

