如何使用Selenium爬取网站并解决选择语言、点击搜索时的报错问题
问题修复方案
原代码存在的错误点
- 下拉框操作语法错误:Selenium不能直接通过
click("option",value="ENG")的方式选择下拉选项,需要导入Select工具类处理下拉选择框 - 元素定位参数错误:
find_element_by_id(searchBtn)中searchBtn是字符串值,缺少引号包裹 - 驱动路径转义问题:Windows本地路径的反斜杠未转义,会触发路径解析错误,需要使用原始字符串或者双反斜杠
- 缺少页面加载等待逻辑:页面元素还未加载完成就执行查找操作,大概率会触发元素不存在报错
- 定义的headers无效:Selenium启动的ChromeDriver不直接读取自定义headers变量,要修改UA需要通过ChromeOptions配置
修正后的可运行代码
from selenium import webdriver from selenium.webdriver.support.ui import Select from time import sleep # 配置Chrome选项 options = webdriver.ChromeOptions() options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.3") # 驱动路径用原始字符串避免转义 driver = webdriver.Chrome(executable_path=r'C:\Program Files (x86)\chromedriver.exe', options=options) # 加隐式等待,全局等待元素加载最长10秒 driver.implicitly_wait(10) driver.get('https://www.counselingcalifornia.com/Find-a-Therapist') # 用Select类处理下拉框 lang_select = Select(driver.find_element_by_id("language_field")) lang_select.select_by_value("ENG") # 定位搜索按钮注意加引号 driver.find_element_by_id("searchBtn").click() print("successfully") # 用完关闭驱动 sleep(3) driver.quit()
补充说明
如果运行后仍出现驱动版本不匹配报错,下载和本地Chrome浏览器版本对应的chromedriver,替换路径中的驱动文件即可。
内容的提问来源于stack exchange,提问作者Amen Aziz
相关产品推荐
相关产品推荐

