Python中for循环遍历range(1,10)却重复输出page=9的问题排查
为什么我的Python循环只重复输出最后一页的URL?
看起来你遇到的问题是循环本该输出从page=1到page=9的不同链接,但实际却重复输出page=9的版本,甚至重复了30次。咱们来拆解问题:
问题根源:缩进错误 + 变量作用域
你给出的代码里,print(url3)如果是正确缩进在for i循环内部,那应该依次输出page=1到page=9的链接。但你实际看到的重复输出最后一页的情况,大概率是下面两种错误之一:
print(url3)没有缩进在循环体内:
当print语句在for i循环外面时,循环会先执行9次,把url3更新为最后一次循环(i=9)的值。如果你还额外把print放在了另一个独立循环(比如for _ in range(30): print(url3))里,就会重复打印30次相同的page=9链接——这完全符合你描述的现象。- 循环变量被意外修改:
这种情况概率很低,除非你在循环内部的其他代码里(比如Request相关操作)不小心修改了i的值,但从你给出的代码来看没有这种情况。
修复方案
确保print(url3)语句正确缩进在for i循环的内部,这样每次循环都会打印当前i对应的URL。另外,把固定的基础URL和动漫名称格式化操作移到循环外面,可以优化代码(没必要每次循环都重复执行这些固定操作):
from urllib.request import Request # 别忘了导入Request模块! print("Search For The News") AnimeName = input('>') url_base = 'https://wall.alphacoders.com/search.php?search=' # 提前处理动漫名称的空格替换,避免重复计算 formatted_anime_name = AnimeName.replace(" ", "+") for i in range(1, 10): url3 = f"{url_base}{formatted_anime_name}&page={i}" useragent = Request(url3, headers={'User-Agent':'Mozilla/5.0'}) print(url3)
验证效果
运行修改后的代码,输入my hero academia,应该会依次输出:
https://wall.alphacoders.com/search.php?search=my+hero+academia&page=1 https://wall.alphacoders.com/search.php?search=my+hero+academia&page=2 ... https://wall.alphacoders.com/search.php?search=my+hero+academia&page=9
这样就能得到你预期的从page=1到page=9的链接了。
内容的提问来源于stack exchange,提问作者Bharath S
相关产品推荐
相关产品推荐

