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

如何在Python中监听pyperclip剪贴板变化并收集复制的URL

pyperclip 剪贴板URL监听实现方案

实现逻辑

  • 单独启动守护线程运行监听逻辑,不阻塞主线程正常执行
  • 轮询对比剪贴板前后内容,仅在内容变化时触发处理逻辑,减少不必要的性能消耗
  • 新增URL格式校验,过滤非URL内容
  • 新增线程退出控制标志,支持主动终止监听任务

完整示例代码

import pyperclip
import threading
import time
import re

# 存储所有捕获到的URL
copied_urls = []
# 线程退出控制标志
exit_flag = False
# URL匹配正则,默认匹配http/https开头的链接,可按需调整规则
URL_REGEX = re.compile(r"^https?://\S+", re.IGNORECASE)

def clipboard_monitor():
    # 初始化上一次剪贴板内容
    last_clip = pyperclip.paste()
    while not exit_flag:
        current_clip = pyperclip.paste()
        # 剪贴板内容发生变更
        if current_clip != last_clip:
            last_clip = current_clip
            # 校验是否为合法URL
            match_result = URL_REGEX.match(current_clip.strip())
            if match_result:
                valid_url = match_result.group()
                copied_urls.append(valid_url)
                print(f"已捕获新URL: {valid_url}")
        # 轮询间隔,可按需调整,数值越小响应越快CPU占用越高
        time.sleep(0.5)

if __name__ == "__main__":
    # 启动监听线程,设置为守护线程,主程序退出时自动销毁
    monitor_thread = threading.Thread(target=clipboard_monitor, daemon=True)
    monitor_thread.start()

    print("剪贴板URL监听已启动,按 Ctrl+C 停止监听")
    try:
        # 主线程可在此处运行其他业务逻辑
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        print("\n监听已停止,捕获到的URL列表如下:")
        for index, url in enumerate(copied_urls, 1):
            print(f"{index}. {url}")
    finally:
        # 终止监听线程
        exit_flag = True
        monitor_thread.join()

注意事项

  • 如果需要匹配FTP、本地文件路径等其他格式的链接,直接修改 URL_REGEX 正则规则即可
  • 如果需要识别剪贴板内多个URL的场景,将 match 方法替换为 findall 即可批量提取所有URL
  • 轮询间隔建议设置在0.2秒到1秒之间,平衡响应速度和CPU占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:15:03