首页 > 编程问答 >我应该如何正确放置我的 chrome 驱动程序路径?

我应该如何正确放置我的 chrome 驱动程序路径?

时间:2024-07-23 08:33:11浏览次数:17  
标签:python google-chrome path selenium-chromedriver

我正在尝试制作一个网络自动抓取工具,并且我想从网站获取数据以用于我的数据模型。我正在使用以下代码来设置我的网络驱动程序:

import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pandas as pd

driver = webdriver.Chrome('/Users/dell/Downloads/chrome-win64')

但我收到如下所示的错误:

PS C:\Users\dell\Desktop\first> & c:/Users/dell/Desktop/first/.venv/Scripts/python.exe c:/Users/dell/Desktop/first/second.py
Traceback (most recent call last):
  File "c:\Users\dell\Desktop\first\second.py", line 6, in <module>
    driver = webdriver.Chrome('/Users/dell/Downloads/chrome-win64')
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\dell\Desktop\first\.venv\Lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 45, in __init__
    super().__init__(
  File "C:\Users\dell\Desktop\first\.venv\Lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 50, in __init__
    if finder.get_browser_path():
       ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\dell\Desktop\first\.venv\Lib\site-packages\selenium\webdriver\common\driver_finder.py", line 47, in get_browser_path 
    return self._binary_paths()["browser_path"]
           ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\dell\Desktop\first\.venv\Lib\site-packages\selenium\webdriver\common\driver_finder.py", line 56, in _binary_paths    
    browser = self._options.capabilities["browserName"]
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'capabilities'

如何解决此问题?


此错误是因为为 ChromeDriver 提供了目录路径,而不是 ChromeDriver 可执行文件的实际路径。这就是解决方案:

  1. 下载 ChromeDriver:
  2. 访问 ChromeDriver 下载页面:https://chromedriver.chromium.org/downloads
  3. 下载与的 Chrome 浏览器版本匹配的 ChromeDriver 版本。要查看的版本,请在 Chrome 地址栏中输入 chrome://version
  4. 解压下载的 zip 文件。

  5. 放置 ChromeDriver:

  6. 可以将 ChromeDriver 可执行文件( chromedriver.exe )放置在以下任何位置:

    • 的项目的根目录。
    • 一个专门用于驱动程序的目录,例如 C:\WebDrivers
  7. 指定 ChromeDriver 路径:

  8. webdriver.Chrome() 中的路径更新为 ChromeDriver 可执行文件的正确路径。
  9. 示例: 如果将 chromedriver.exe 放在 C:\WebDrivers 中,则代码将如下所示:

    python driver = webdriver.Chrome('C:\WebDrivers\chromedriver.exe')

完整更正后的代码:

import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pandas as pd

driver = webdriver.Chrome('C:\WebDrivers\chromedriver.exe') # 假设将 chromedriver.exe 放在此处

# 现在继续执行的网络抓取代码

其他提示:

  • 确保的 ChromeDriver 版本与的 Chrome 浏览器版本兼容。
  • 如果在将 ChromeDriver 添加到系统路径后仍然遇到问题,请重新启动的 IDE 或计算机,以确保更改生效。

标签:python,google-chrome,path,selenium-chromedriver
From: 78779936

相关文章

  • matplotlib与Python不兼容问题
    “我使用的是Matplotlib版本3.7.2。Anaconda的Spyder中的Python版本是3.8.18。当我运行importmatplotlib.pyplotasplt行时,出现错误module'matplotlib'hasnoattribute'rcParams'。当我尝试将Matplotlib和matplotlib.base包从当前的3.7.2版本升级到3.8......
  • 使用 json 配置文件进行 Python 日志记录
    我玩弄了日志模块,发现了一些我不太清楚的事情。首先,因为这是一个大程序,我希望代码尽可能简单,因此我使用了json配置文件.{"version":1,"disable_existing_loggers":false,"formatters":{"simple":{"format":"%(asctime)s-%(name)s......
  • Python随机库:从帕累托分布进行模拟(使用形状和尺度参数)
    根据Python文档,random.paretovariate(alpha)模拟帕累托分布,其中alpha是形状参数。但帕累托分布同时采用形状和尺度参数。如何从指定这两个参数的分布中进行模拟?你说的对,帕累托分布是由形状和尺度参数定义的,而random.paretovariate(alpha)函数只接受形状参数......
  • 跳过 Python Spark Pyspark Databricks 未知字段异常中的不良记录
    我想知道是否有人知道如何跳过我们从json文件获取的记录这是错误[UNKNOWN_FIELD_EXCEPTION.NEW_FIELDS_IN_RECORD_WITH_FILE_PATH]在解析过程中遇到未知字段:这是失败的代码sent=spark.readStream.format('cloudFiles')\.option('cloudFiles.format','json')......
  • 使用 python 截断 Databricks 中的增量表
    对于Python和SQL,这里给出了Delta表删除操作,并且给出了使用SQL的截断这里但我找不到Python截断表的文档。如何在Databricks中对增量表执行此操作?HowtodoitfordeltatableinDatabricks?虽然Databricks中没有直接使用PythonAPI截断De......
  • 从Python中的列表列表中提取随机列表选择
    我有一个从图像生成的RGB值列表:color_list=[(192,155,120),(132,81,65),(226,226,199),(76,94,117),(140,157,178),(17,34,54),(217,213,139),(134,171,144),(98,123,95),(109,145,96),(181,109,92),(71,47,39),......
  • 这段代码是否保证Python对象被立即删除?
    我正在将Redis异步客户端与Celery一起使用,但在两者之间的集成方面遇到了一些问题。上下文是我需要删除redis.Redis实例(在构造函数中创建)以便关闭连接(该对象有一个close方法,但当asyncio事件循环关闭时我无法使用它,heal_client方法仅在这些情况下才会使用。我的代码如......
  • python selenium 行为错误:AttributeError:“Context”对象没有属性“driver”
    我正在使用pythonselenium与Behavior包一起工作。这是代码:@given('theuserisontheloginpage')defstep_given_user_on_login_page(context):PATH='C:/Users/PycharmProjects/ui_test/chromedriver-win32/chromedriver.exe'context.driver=......
  • 类型错误:需要 str、bytes 或 os.PathLike 对象,而不是 _io.BufferedReader
    我正在尝试迭代本地计算机上文件夹中的一组文件,并使用此代码(Python3.6.132位、Windows1064位)仅将文件名包含“Service_Areas”的文件上传到我的FTP站点):ftp=FTP('ftp.ftpsite.org')username=('username')password=('password')ftp.login(username,password)......
  • python 脚本中的路点用于处理大数据集
    我编写了一个脚本,将一堆来自api的请求写入csv文件。该api中有数千个请求,并且在结束循环/退出程序之前永远不会结束。如何合并航路点,以便如果再次发生停顿,它会自动继续前进并最终打印所有请求?我尝试了一些不起作用的方法,但我不知道下一步该怎么做。以下是使用航路点......