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

为何这段try-except-finally代码出现'unexpected EOF while parsing'错误?

问题分析与解决思路

unexpected EOF while parsing是Python语法错误,说明代码存在结构缺陷或语法遗漏,结合你的代码可从以下几点排查修复:

  • 导入缺失的异常类:NoSuchElementException属于Selenium的异常类,必须显式导入才能使用,否则会触发语法或名称错误。添加导入语句:

    from selenium.common.exceptions import NoSuchElementException
    
  • 重构finally块的错误逻辑:finally块会无条件执行,若第二个XPATH也找不到元素,driver.find_element会直接抛出未捕获的异常。建议改用更稳妥的逻辑:
    方案一:用嵌套try-except覆盖两种页面结构

    text_box1 = '/html/body/div[7]/div[45]/div[37]/div/table[1]/tbody/tr/td[1]/div/div[1]/span'
    text_box2 = '/html/body/div[8]/div[45]/div[37]/div/table[1]/tbody/tr/td[1]/div/div[1]/span'
    try:
        element = driver.find_element(by=By.XPATH, value=text_box1)
    except NoSuchElementException:
        element = driver.find_element(by=By.XPATH, value=text_box2)
    # 统一提取文本内容
    title = element.text.split('\n')[0]
    content = element.text.replace(title + "\n\n", "")
    

    方案二:用XPATH的OR逻辑合并两种路径,一次查找完成

    text_box = '//html/body/div[7]/div[45]/div[37]/div/table[1]/tbody/tr/td[1]/div/div[1]/span | //html/body/div[8]/div[45]/div[37]/div/table[1]/tbody/tr/td[1]/div/div[1]/span'
    element = driver.find_element(by=By.XPATH, value=text_box)
    title = element.text.split('\n')[0]
    content = element.text.replace(title + "\n\n", "")
    
  • 检查代码缩进与完整性:确保try/except/finally块的缩进完全一致,没有遗漏语句末尾的冒号,避免因格式问题触发解析错误。

  • 修复未定义变量问题:原代码中post_title变量未声明,运行时会抛出NameError,需确认该变量已正确赋值或替换为实际需要的变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:20:48