有四种方法可以停止 Python 爬虫:通过键盘中断 (Ctrl+C 或 Ctrl+Break)、使用信号处理、使用事件或使用条件变量。

如何停止 Python 爬虫
在进行网络爬取时,有必要能够控制爬虫的运行,包括让它停止。以下是实现此目的的几种方法:
1. 通过键盘中断
最简单的方法是通过键盘中断 (Ctrl+C 或 Ctrl+Break) 停止爬虫。当您这样做时,Python 解释器将引发 KeyboardInterrupt 异常,您可以在代码中处理该异常以优雅地终止爬虫。
立即学习“Python免费学习笔记(深入)”;
2. 使用信号处理
SkillSub Pro - Python 题解与代码注释双功能技能功能概述SkillSub Pro - Python 题解与代码注释双功能技能是一项面向实际任务的技能,主要用于SkillSub Pro 是一个 Python 题解生成与代码注释的 双功能合体技能 ,专为学生、算法学习者和开发者设计;✅ 一个技能,两种用途 :;核心要点📝 题解模式 :输入题目/题号,自动生成完整 Python 题解(含详细注释、解题思路、复杂度分析);💬 注释模式 :输入 Python 代码,自动添加详细中。它将相关步骤、
信号处理允许您捕获系统信号,例如键盘中断。要在爬虫中实现这一点,您可以使用 signal 模块。
<code class="python">import signal
def signal_handler(signal, frame):
print("收到中断信号,停止爬虫...")
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)</code>3. 使用事件
事件是另一种处理外部事件的方法。可以在爬虫中创建事件,并在必要时触发它以停止爬虫。
<code class="python">import threading
event = threading.Event()
def stop_crawler():
event.set()
# 在爬虫 loop 中检查事件
while not event.is_set():
# 爬虫逻辑...</code>4. 使用条件变量
条件变量类似于事件,但允许您在等待特定条件时暂停线程。这可以在爬虫中用来等待停止信号,如下所示:
<code class="python">import threading
condition = threading.Condition()
stop_flag = False
def stop_crawler():
with condition:
stop_flag = True
condition.notify_all()
# 在爬虫 loop 中等待停止信号
while True:
with condition:
condition.wait_for(lambda: stop_flag)
# 停止爬虫...</code>


















