使用Python处理分页API数据时遇TypeError问题求助
解决API分页数据拼接时的TypeError问题
嗨,我来帮你搞定这个问题哈!你遇到的报错完全是因为变量类型不匹配导致的,咱们一步步理清楚:
问题根源
你一开始把response赋值成了URL字符串,但requests.get(url)返回的是一个Response对象——这俩根本不是一个类型,直接用+=拼接肯定会报TypeError: must be str, not Response的错。
正确的实现思路
咱们应该用一个容器(比如列表)来收集每一页的数据,而不是去拼接字符串或者Response对象。具体步骤很简单:
- 初始化一个空列表,用来存储所有页面的返回数据
- 遍历所有页码(包括第1页,你之前漏了哦)
- 每一页发送请求后,把解析好的数据(JSON或文本)添加到列表里
- 最后整合所有数据,方便后续提取操作
修改后的代码
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
相关产品推荐
相关产品推荐

