如何在for循环中实现无限循环?列表循环仅获首个元素的代码修复
问题解答
1. 如何在for循环中实现无限循环?
有两种常用实现方式:
- 借助无限迭代器:使用
itertools.cycle()生成无限重复的迭代序列,让for循环持续执行,直到手动触发break终止。示例:import itertools for _ in itertools.cycle([1]): # 执行循环逻辑 print("无限循环中...") # 可通过条件判断添加break终止循环 - for循环内嵌套while True:如果是要对for循环遍历的每个元素执行无限循环操作(如你的第二个需求),直接在for循环块内嵌套
while True,通过特定条件触发break退出当前元素的循环,继续处理下一个元素。
2. 代码修复方案
你的代码存在三个核心问题:URL硬编码了目标编号、分页变量未重置、冗余解析JSON,修复后的代码如下:
import pandas as pd import requests final_complex = pd.DataFrame() for code in ['111552', '101410', '103177']: n = 1 # 每个编号的循环开始时重置页码 while True: # 替换URL中硬编码的编号,使用当前循环的code变量 url = '''https://new.land.naver.com/api/articles/complex/{}?realEstateType= APT%3AABYG%3AJGC&tradeType=A1&tag=%3A%3A%3A%3A%3A%3A%3A%3A&rentPriceMin=0& rentPriceMax=900000000&priceMin=0&priceMax=900000000&areaMin=0&areaMax=900000000&oldBuildYears& recentlyBuildYears&minHouseHoldCount&maxHouseHoldCount& showArticle=false&sameAddressGroup=true&minMaintenanceCost&maxMaintenanceCost& priceType=RETAIL&directions=&page={}&complexNo={}&buildingNos=&areaNos=&type=list&order=rank'''.format(code, n, code) headers = { 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7', 'authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IlJFQUxFU1RBVEUiLCJpYXQiOjE2NjMwNzMwNDQsImV4cCI6MTY2MzA4Mzg0NH0.ZJ8FLYxYpdkrsrXneI5OBjUNPxSzCbMsymxGEAg1ZX0', 'Connection': 'keep-alive', 'Host': 'new.land.naver.com', 'Referer': 'https://new.land.naver.com/complexes?ms=37.3595704,127.105399,16&a=APT:ABYG:JGC&b=A1&e=RETAIL', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.9 Safari/537.36', } res = requests.get(url, headers=headers) data_dict = res.json() temp = pd.DataFrame(data_dict['articleList']) if len(temp) == 0: break # 无数据时退出当前编号的循环 final_complex = pd.concat([final_complex, temp]) n += 1 print(final_complex)
修复说明:
- 将URL中硬编码的
complex/111552和complexNo=3756替换为占位符,通过format传入当前循环的code变量,实现遍历不同编号 - 把页码变量
n=1移到for循环内部,确保每个编号都从第1页开始请求数据 - 移除冗余的
res.json()调用,仅解析一次JSON数据
内容的提问来源于stack exchange,提问作者YHKIM
相关产品推荐
相关产品推荐

