You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python处理分页API数据时遇TypeError问题求助

解决API分页数据拼接时的TypeError问题

嗨,我来帮你搞定这个问题哈!你遇到的报错完全是因为变量类型不匹配导致的,咱们一步步理清楚:

问题根源

你一开始把response赋值成了URL字符串,但requests.get(url)返回的是一个Response对象——这俩根本不是一个类型,直接用+=拼接肯定会报TypeError: must be str, not Response的错。

正确的实现思路

咱们应该用一个容器(比如列表)来收集每一页的数据,而不是去拼接字符串或者Response对象。具体步骤很简单:

  1. 初始化一个空列表,用来存储所有页面的返回数据
  2. 遍历所有页码(包括第1页,你之前漏了哦)
  3. 每一页发送请求后,把解析好的数据(JSON或文本)添加到列表里
  4. 最后整合所有数据,方便后续提取操作

修改后的代码

import requests

# 初始化空列表,用来装所有页面的数据
all_pages_data = []

# 遍历第1到31页(range(1,32)会生成1到31的整数)
for page_num in range(1, 32):
    # 用f-string拼接URL,比字符串相加更清晰易读
    url = f"https://api.dane.gov.pl/resources/17201/data?page={page_num}"
    # 发送请求并获取响应对象
    response = requests.get(url)
    
    # 先检查请求是否成功,避免后续解析失败
    response.raise_for_status()
    
    # 这里假设API返回的是JSON格式(多数分页API都是),用.json()解析成Python字典/列表
    # 如果返回的是纯文本,就换成page_data = response.text
    page_data = response.json()
    
    # 把当前页的数据添加到总列表里
    all_pages_data.append(page_data)

# 现在all_pages_data里就有所有31页的数据了
# 举个例子,如果每个页面返回的是数据列表,咱们可以把它们合并成一个大列表:
combined_data = []
for page in all_pages_data:
    combined_data.extend(page)

# 接下来就可以对combined_data进行提取和操作啦

额外小提醒

  • 别忘了导入requests模块,不然代码会直接报错
  • response.raise_for_status()很实用,它会在请求失败(比如404、500错误)时直接抛出异常,帮你快速排查问题
  • 如果不确定API返回的格式,可以先打印response.text看看,再决定用.json()还是.text解析

内容的提问来源于stack exchange,提问作者Frendom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:40:57