为何这段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
相关产品推荐
相关产品推荐

