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

瑞安航空航班数据爬虫UnboundLocalError问题排查与修复咨询

瑞安航空爬虫无航班时UnboundLocalError问题修复

问题原因

触发UnboundLocalError的核心原因是:departure_date、departure_flyout_times等变量仅在成功抓取到航班数据的分支中定义,当指定日期无航班时,这些变量从未被初始化,导致最后组装返回字典时无法找到变量引用。原代码的错误处理逻辑只考虑了赋值默认文本,但未提前初始化变量,属于变量作用域的基础问题。

修复方案

步骤1:提前初始化所有变量

在return_flight函数开头,先为所有需要用到的变量设置默认值(对应无航班的状态),确保无论是否抓取到航班,变量都有定义:

from datetime import datetime

def return_flight(departure_date_str, return_date_str, origin, destination, adults):
    # 初始化去程变量(默认无航班状态)
    departure_date = datetime.strptime(departure_date_str, '%Y-%m-%d').strftime('%d %b')
    departure_flyout_times = 'N/A'
    arrival_flyout_times = 'N/A'
    departure_price = 'N/A'
    
    # 初始化返程变量(默认无航班状态)
    return_date = datetime.strptime(return_date_str, '%Y-%m-%d').strftime('%d %b')
    departure_flyback_times = 'N/A'
    arrival_flyback_times = 'N/A'
    return_price = 'N/A'

    # 原有的去程航班抓取逻辑(示例)
    try:
        # 当抓取到去程航班数据时,覆盖默认变量值
        departure_flyout_times = 抓取到的去程起飞时间
        arrival_flyout_times = 抓取到的去程到达时间
        departure_price = 抓取到的去程价格
    except:
        # 无航班时保留默认值
        pass

    # 原有的返程航班抓取逻辑(示例)
    try:
        # 当抓取到返程航班数据时,覆盖默认变量值
        departure_flyback_times = 抓取到的返程起飞时间
        arrival_flyback_times = 抓取到的返程到达时间
        return_price = 抓取到的返程价格
    except:
        pass

    # 组装返回结果
    return [
        {'Departure': {
            'date': departure_date,
            'departure_time': departure_flyout_times,
            'arrival_time': arrival_flyout_times,
            'price': departure_price
        }},
        {'Return': {
            'date': return_date,
            'departure_time': departure_flyback_times,
            'arrival_time': arrival_flyback_times,
            'price': return_price
        }}
    ]

步骤2:调整原有条件判断逻辑

将原代码第50-94行的if语句,修改为当抓取到有效航班数据时,覆盖提前初始化的变量值,而非在分支内定义新变量。这样无论是否存在航班,所有变量都处于已定义状态,不会触发未绑定错误。

验证修复结果

修复后三种场景均能返回符合预期的格式:

  • 往返均有航班:正常返回航班时间与价格
  • 无去程航班:去程字段统一显示N/A,返程数据正常
  • 无返程航班:返程字段统一显示N/A,去程数据正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:17:10