Meetup API分页迭代While循环失效问题求助
解决Meetup API分页遍历的错误问题
我来帮你捋捋这个分页遍历的问题,看你贴的代码,有几个明显的坑可能导致出错,咱们一个个来修正:
1. URL里的转义字符是隐形坑
你原始URL里的&是HTML转义后的&符号,直接丢给requests.get的话,API服务器会把它当成参数的一部分,而不是参数分隔符,这会导致请求的参数解析错误,返回的数据结构可能和你预期的不一样,自然取meta.next的时候就容易出问题。得把所有&换成普通的&。
2. 分页URL的赋值逻辑错了
你代码里把下一页的URL赋值给了url2,但循环判断的是url变量,这就导致循环只会跑一次,根本不会去请求后续的分页数据。得把url = data['meta'].get('next'),这样每次循环结束后更新url,没有下一页的时候get会返回None,循环就自动终止了。
3. 缺少异常处理太脆弱
API请求很容易出问题——比如网络波动、服务器返回非JSON格式、或者返回的数据里没有meta/results字段,没有异常处理的话程序直接就崩了,还不知道哪里错了。最好加上异常捕获,既能避免崩溃,还能打印错误信息方便排查。
修正后的完整代码
import requests import pandas as pd # 修正URL中的转义字符,把&替换成& url = 'https://api.meetup.com/2/groups?offset=1&format=json&category_id=34&photo-host=public&page=100&radius=200.0&fields=&order=id&desc=false&sig_id=243750775&sig=768bcf78d9c73937fcf2f5d41fe6070424f8d0e3' while url: try: # 发送请求并检查是否成功 response = requests.get(url) response.raise_for_status() data = response.json() # 解析当前页的结果 page_data = pd.io.json.json_normalize(data['results']) print(page_data) # 更新为下一页的URL,没有则返回None,循环终止 url = data['meta'].get('next') except requests.exceptions.RequestException as e: print(f"请求过程出错了: {str(e)}") break except KeyError as e: print(f"返回的JSON结构不对,找不到字段: {str(e)}") break
你可以试试这个版本,应该能解决你遇到的问题。如果还是有错误,看看控制台打印的错误信息,就能知道具体是请求问题还是数据结构的问题了。
内容的提问来源于stack exchange,提问作者snow_fall
相关产品推荐
相关产品推荐

