Python Selenium网页抓取时无法正确输入特殊字符ö问题求解
- 先确认Python脚本编码声明正确,在文件最顶部添加如下声明,避免源码层面的字符编码解析错误:
# -*- coding: utf-8 -*-
- 优先使用JavaScript注入的方式修改输入框内容,该方式不受系统输入法、输入框按键拦截逻辑的影响,兼容性远高于
send_keys,修改对应代码段如下:
if actualLetter == "Ö": input_char = "Ö" elif actualLetter == "ö": input_char = "ö" else: input_char = actualLetter # 用JS直接给输入框赋值 web.execute_script("arguments[0].value = arguments[1]", text_done, input_char) # 如果输入框绑定了输入事件需要触发,可以再加一行触发事件 web.execute_script("arguments[0].dispatchEvent(new Event('input'))", text_done)
- 提前校验你抓取到的
actualLetter是否符合预期:可以打印repr(actualLetter)查看字符的实际编码值,排除抓取到带不可见字符、编码乱码的情况,避免判断分支没有走到预期路径。 - 如果一定要使用
send_keys方法,可以先执行text_done.clear()清空输入框、text_done.click()聚焦输入框后再调用输入方法,同时检查你注释掉的keyboard相关全局钩子是否会影响Selenium的模拟按键输入。
内容的提问来源于stack exchange,提问作者Hamsyy
相关产品推荐
相关产品推荐

