Scrapy-Selenium报错:WebDriver.__init__()收到意外参数'executable_path'
解决Scrapy-Selenium TypeError: WebDriver.init() got an unexpected keyword argument 'executable_path'
错误原因
你安装的是Selenium 4.x版本,而当前使用的scrapy-selenium版本仍沿用旧版Selenium(3.x及以下)的API,通过executable_path参数初始化WebDriver。但Selenium 4.x已移除该参数,改用Service类配置驱动路径,因此触发参数不匹配错误。
解决方案
方法1:降级Selenium到3.x版本(快速解决)
执行命令安装兼容的旧版Selenium:
pip install selenium==3.141.0
降级后,你原有的settings.py配置无需修改,可直接正常运行。
方法2:适配Selenium 4.x版本(推荐,避免版本安全风险)
步骤1:升级scrapy-selenium到最新兼容版本
pip install --upgrade scrapy-selenium
步骤2:修改settings.py配置,适配Selenium 4的Service模式
from selenium.webdriver.chrome.service import Service from shutil import which SELENIUM_DRIVER_NAME = 'chrome' # 可保留which函数自动查找,或直接写chromedriver完整路径,如 r'C:\Users\denis\Desktop\Scrapy_Study\pythonProject\chromedriver.exe' SELENIUM_DRIVER_EXECUTABLE_PATH = which('chromedriver') SELENIUM_DRIVER_ARGUMENTS=['--headless'] # 指定Service类,适配Selenium 4 SELENIUM_SERVICE_CLASS = Service DOWNLOADER_MIDDLEWARES = { 'scrapy_selenium.SeleniumMiddleware': 800 }
备选:自定义中间件(若升级后仍不兼容)
如果升级scrapy-selenium后问题依旧,可自定义中间件替代官方的SeleniumMiddleware:
- 在项目目录下创建
middlewares.py,写入以下代码:
from scrapy.http import HtmlResponse from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium import webdriver class CustomSeleniumMiddleware: def __init__(self): chrome_options = Options() chrome_options.add_argument('--headless') # 替换为你的chromedriver完整路径 service = Service(executable_path=r'C:\Users\denis\Desktop\Scrapy_Study\pythonProject\chromedriver.exe') self.driver = webdriver.Chrome(service=service, options=chrome_options) def process_request(self, request, spider): self.driver.get(request.url) return HtmlResponse( url=self.driver.current_url, body=self.driver.page_source, encoding='utf-8', request=request ) def spider_closed(self, spider): self.driver.quit()
- 修改
settings.py中的下载中间件配置:
DOWNLOADER_MIDDLEWARES = { 'your_project_name.middlewares.CustomSeleniumMiddleware': 800 }
(注意替换your_project_name为你的Scrapy项目名称)
内容的提问来源于stack exchange,提问作者densol96
相关产品推荐
相关产品推荐

