Python Requests模块循环问题:range(0,4)未获取全部5个网页的原因
关于Python range()函数索引覆盖的问题解答
嘿,这个问题其实是Python新手常踩的range()函数误区,我来给你掰扯清楚~
你之所以只拼接了4个网页,核心原因是**range(start, stop)是左闭右开的区间**——它会包含start对应的数值,但永远不包含stop的数值。
举个例子,你写的range(0,4),实际生成的索引是0、1、2、3,一共4个值。而你的pages列表有5个元素,对应的索引是0、1、2、3、4,所以最后一个元素(索引4)根本没被遍历到,自然就漏掉了。
你提到的修改方案是完全正确的:
- 改成
range(0,5),会生成0-4的索引,刚好覆盖5个元素 - 更稳妥的是用
range(len(pages)),不管pages里有多少个网页,都能自动匹配正确的索引范围
另外给你提个更Pythonic的写法,其实没必要手动遍历索引,直接迭代列表里的每个网页URL就行,既简洁又能避免索引错误:
pages = [*5个网页的列表*] final = [] for page_url in pages: page = requests.get(page_url) final.append(page.text) print(''.join(final))
内容的提问来源于stack exchange,提问作者hexated
相关产品推荐
相关产品推荐

