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

使用Selenium爬取YouTube:封装函数后无法存储爬取结果

排查Selenium爬虫封装函数后数据无法保存的常见原因
  • 函数未返回爬取结果
    单独运行时数据能正常保存,大概率是你在函数内部完成了爬取,但没把结果return出来。比如单独运行时直接将数据写入文件或存在变量里,封装函数后如果不返回数据,外部代码根本拿不到爬取结果,自然无法保存。
    示例修正:

    def crawl_youtube_channel():
        # 此处编写Selenium爬取逻辑
        data = {"channel_id": "xxx", "sub_count": "100w", "videos": [{"title": "xxx", "views": "10w"}]}
        return data  # 必须返回爬取到的数据
    
    # 调用函数并保存结果
    result = crawl_youtube_channel()
    with open("channel_data.json", "w", encoding="utf-8") as f:
        json.dump(result, f, ensure_ascii=False)
    
  • 局部变量与全局变量混淆
    如果你原本用全局变量存储数据,但在函数里没有声明global关键字,函数会创建同名的局部变量,外部的全局变量根本不会被修改。比如:

    channel_data = {}
    
    def crawl():
        # 未声明global,此处是局部变量,外部的channel_data不会被赋值
        channel_data["channel_id"] = "xxx"
    

    修正:要么在函数开头添加global channel_data,要么改成返回数据的形式(更推荐,避免全局变量带来的副作用)。

  • 异常被静默忽略
    封装函数后可能触发了异常,但你没有添加异常捕获逻辑,导致程序直接崩溃却没给出提示,看起来像是“数据没保存”。比如页面加载超时、元素定位失败,单独运行时可能刚好没遇到这类问题,封装后执行环境或顺序变化触发了异常。
    解决:在函数内添加异常捕获并打印错误信息:

    def crawl_youtube_channel():
        try:
            # Selenium爬取逻辑
            ...
            return data
        except Exception as e:
            print(f"爬取过程出错: {str(e)}")
            return None
    
  • 文件路径问题
    单独运行时文件会保存在当前脚本所在目录,但封装函数后如果被其他模块调用,当前工作目录可能发生变化,导致文件被写到了你找不到的路径下。
    解决:使用绝对路径保存文件:

    import os
    # 获取当前脚本所在目录的绝对路径
    save_dir = os.path.dirname(os.path.abspath(__file__))
    save_path = os.path.join(save_dir, "channel_data.json")
    with open(save_path, "w", encoding="utf-8") as f:
        json.dump(data, f, ensure_ascii=False)
    
  • Selenium会话未正确清理
    封装函数后如果没有关闭浏览器会话,可能导致内存泄漏或后续操作阻塞,数据还没完成写入就被卡住。要确保函数结束时关闭会话,并且放在finally块中,避免异常时未执行清理:

    def crawl_youtube_channel():
        driver = None
        try:
            driver = webdriver.Chrome()
            # Selenium爬取逻辑
            ...
            return data
        finally:
            if driver:
                driver.quit()  # 确保浏览器会话被关闭
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:32:58