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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:30:42