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

使用Python3爬取quotes.toscrape.com时代码陷入无限循环是什么原因?

代码问题排查结论

你的编辑器无响应不是运行时间不够,是代码存在无限死循环的逻辑缺陷,具体原因如下:

  • http://quotes.toscrape.com 对于超过总页数的请求不会返回4xx/5xx错误码,会返回状态码200的正常空白页面,requests.get不会抛出异常,你写的try...except逻辑永远触发不了终止条件,while True会无限执行请求。
  • 你原本的页码计算逻辑冗余,也没有设置除异常外的其他终止判断,导致循环会一直生成新的页码请求空页面。
修复后的可用代码
import requests
import bs4

authors = set()
page = 1
# 统一页码规则,page=1对应首页内容和根域名完全一致
base_url = "http://quotes.toscrape.com/page/{}/"

while True:
    res = requests.get(base_url.format(page), timeout=10)
    soup = bs4.BeautifulSoup(res.text, 'lxml')
    current_authors = soup.select('.author')
    # 当页无作者信息说明已经爬完所有页面,终止循环
    if not current_authors:
        break
    for name in current_authors:
        authors.add(name.text)
    page += 1

# 打印最终爬取结果
print(authors)
额外优化建议
  • 不要使用空的except块,会吞掉所有意料之外的异常(比如网络中断、依赖包缺失报错等),建议明确指定需要捕获的异常类型,比如except requests.exceptions.RequestException:
  • 给requests.get添加timeout参数,避免网络波动导致请求长时间卡住

内容的提问来源于stack exchange,提问作者NightRaven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 18:24:02