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

如何在Playwright中将lambda回调内的变量提取到外部使用?

Playwright 捕获.m3u8响应链接存储到外部变量实现方案

实现原理

Python中不可变类型(字符串、数字、元组)在函数内部作用域赋值时,会被默认识别为局部变量,无法直接修改外部作用域的同名变量。因此我们可以借助列表、字典这类可变容器存储匹配到的链接,不需要修改变量本身的引用,只需要修改容器内部的元素,回调执行完成后就可以直接从外部读取值。

完整修改代码

from playwright.sync_api import sync_playwright

url = "https://hls-js.netlify.app/demo/" 
# 用可变列表存储所有匹配到的m3u8链接,如果只需要存单个也可以用字典:m3u8_store = {"url": ""}
m3u8_urls = []

with sync_playwright() as p: 
    browser = p.chromium.launch(channel = "chrome")
    page = browser.new_page()
    # 回调逻辑改为向列表中追加匹配的链接
    page.on("response", lambda response: m3u8_urls.append(response.url) if ".m3u8" in response.url else None)
    page.goto(url)
    page.wait_for_timeout(10*1000)
    browser.close()

# 后续代码可直接调用该变量
print("已捕获的m3u8链接:", m3u8_urls)

可选优化:去重存储

如果需要避免存储重复的链接,可在回调中增加去重判断:

page.on("response", lambda response: m3u8_urls.append(response.url) if ".m3u8" in response.url and response.url not in m3u8_urls else None)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:27:07