You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:

  1. 在项目目录下创建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()
  1. 修改settings.py中的下载中间件配置:
DOWNLOADER_MIDDLEWARES = {
     'your_project_name.middlewares.CustomSeleniumMiddleware': 800
}

(注意替换your_project_name为你的Scrapy项目名称)

内容的提问来源于stack exchange,提问作者densol96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:53:16