Python Selenium运行触发unicodeescape类SyntaxError报错求助
报错本质
这个异常是Python字符串转义规则和Windows路径写法冲突导致的:
- Python语法中,反斜杠
\是字符串内的转义起始标识,其中\U是Unicode转义的专属前缀,要求后续必须跟8位十六进制的Unicode编码值才能正常解析 - 配置
user-data-dir的代码行里,路径C:\Users\...的结构刚好让\和后面的Users首字母U组成了\U转义前缀,Python解析时发现后续字符凑不成符合要求的Unicode编码结构,就抛出了截断的转义解码错误。 - 原代码还有两处逻辑缺陷会导致运行失败:一是没有实例化
Options类的对象,直接调用options.add_argument会触发未定义变量报错;二是先硬编码chromedriver路径初始化了一次driver,后续又重复初始化带配置的driver,前面的无效初始化完全冗余。
对应修复方案
Windows路径的转义问题,任选以下一种写法就能解决:
- 给字符串加
r前缀改成原始字符串,关闭Python的转义解析功能options.add_argument(r"user-data-dir=C:\Users\Username\AppData\Local\Google\Chrome\User\Data") - 把路径里的单
\替换成\\,用转义后的反斜杠代表实际的目录分隔符options.add_argument("user-data-dir=C:\\Users\\Username\\AppData\\Local\\Google\\Chrome\\User\\Data") - 把路径的分隔符统一换成正斜杠
/,Chrome和Windows系统都能正常识别这类路径options.add_argument("user-data-dir=C:/Users/Username/AppData/Local/Google/Chrome/User/Data")
修正后的完整可运行代码
from selenium import webdriver from time import sleep from selenium.webdriver.chrome.options import Options # 先实例化Chrome配置对象 options = Options() # 加载自定义用户数据目录参数,使用原始字符串避免路径转义问题 options.add_argument(r"user-data-dir=C:\Users\Username\AppData\Local\Google\Chrome\User\Data") # 一次性完成driver初始化,传入chromedriver路径和配置参数 driver = webdriver.Chrome(executable_path=r"C:\Program Files (x86)\chromedriver.exe", chrome_options=options) sleep(1) driver.get("https://web.whatsapp.com/")
内容的提问来源于stack exchange,提问作者ahron
相关产品推荐
相关产品推荐

