无法让 selenium webdriver 在 azure databricks 中工作

2023-12-13

我们有一些 python 脚本可以抓取网站并且运行良好。现在我们想在 Azure Databricks 中执行此操作。 我们认为我们可以通过 Databricks 论坛中的以下帖子找到解决方案,但不幸的是,它不起作用。 (https://forums.databricks.com/questions/15480/how-to-add-webdriver-for-selenium-in-databricks.html?childToView=21347#answer-21347)

运行最后一段代码后我们得到的错误是: WebDriverException:消息:未知错误:找不到 Chrome 二进制文件(驱动程序信息:chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Linux 4.15.0-1050-azure x86_64)

最后一段代码如下所示:

    %py

    from selenium import webdriver

    chrome_options = webdriver.ChromeOptions()

    chrome_options.add_argument('--no-sandbox')

    chrome_options.add_argument('--headless')

    chrome_options.add_argument('--disable-dev-shm-usage')

    chrome_driver = "/tmp/chromedriver/chromedriver"

    driver = webdriver.Chrome(chrome_driver, 
    chrome_options=chrome_options)

    driver.get("https://www.google.com")

我找到了一篇文章,其中我必须给出二进制文件的位置:Selenium 在 Mac 上给出“selenium.common.exceptions.WebDriverException:消息:未知错误:找不到 Chrome 二进制文件”

    options.binary_location = "/Applications/Google 
    Chrome.app/Contents/MacOS/Google Chrome"

但我不知道此二进制文件在 Azure Databricks 中的文件位置。


好吧,在对原始脚本进行一些小改动后,我已经让它可以工作了

    %sh /databricks/python3/bin/pip3 install selenium
    ==================
    %sh
    wget      
    https://chromedriver.storage.googleapis.com/73.0.3683.68/chromedriver_linux64.zip 
    -O /tmp/chromedriver_linux64.zip
    ==================
    %sh mkdir /tmp/chromedriver
    ================
    %sh
    unzip /tmp/chromedriver_linux64.zip -d /tmp/chromedriver/
    ==================
    %sh
    sudo add-apt-repository ppa:canonical-chromium-builds/stage
    ===================
    %sh
    /usr/bin/yes | sudo apt update
    ===================
    %sh
    /usr/bin/yes | sudo apt install chromium-browser
    ===================
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_driver = "/tmp/chromedriver/chromedriver"
    driver = webdriver.Chrome(chrome_driver,chrome_options=chrome_options)
    driver.get("https://www.google.com")

该脚本下载并更新了 chromium 至版本 77。而 chromedriver 为 73。更改链接以下载 chromedriver 77 就可以了。

    wget 
    https://chromedriver.storage.googleapis.com/77.0.3865.40/chromedriver_linux64.zip 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法让 selenium webdriver 在 azure databricks 中工作 的相关文章

随机推荐

  • 根在函数中不起作用[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想在函数中使用matlab函数根 但这不起作用 我不知道如何解决这个问题 这是函数 f
  • 在 PyCharm 中使用 Matplotlib 时如何修复“无法找到或加载 Qt 平台插件窗口”

    在 PyCharm 中使用 matplotlib 时收到错误 无法找到或加载 Qt 平台插件窗口 我该如何解决这个问题 我在 Anaconda3 4 2 0 和 4 3 0 1 64 位 上遇到了同样的问题 当我尝试运行一个使用 matpl
  • 我想捕获一个异常并将其捆绑在我自己的异常中并向上抛出

    我有一个管理资源的类 它需要一个可以从路径检索资源的 Loader 类 Loader 是一个抽象基类 因此任何人都可以创建新的加载器 如果请求的资源不在缓存中 则资源管理器将从加载器请求该资源 如果加载器失败 资源管理器会抛出一个我创建的名
  • 根据服务器数据(纬度和经度)移动MKMapView中的注释

    在我的应用程序中 我通过以特定时间间隔从服务器获取其他人的位置 纬度和经度 来显示其他人的位置 获取后 我必须删除所有注释并根据服务器数据删除新注释 但它看起来效率很低 因为当我们先前存在同一用户的注释时 即使我删除并添加相同的用户注释 所
  • 如何修复 ASP.NET 开发服务器中的端口号

    昨天我正在编写一个独立的 html 网页 每次我查看它时 该文件都在本地主机中运行 因此 我的操作系统 Windows 8 分配了一个端口号 我的文件的路径如下所示 http localhost 2038 Projects test htm
  • M_PI 适用于 math.h,但不适用于 Visual Studio 中的 cmath

    我正在使用 Visual Studio 2010 我读过在 C 中最好使用
  • 如何启动具有标准 bash shell 环境的 java 进程?

    我尝试过研究进程构建器 但我不确定如何将 bash 环境引入到进程中 例如 我使用以下命令来启动我的流程 Process p new ProcessBuilder args start InputStream is p getInputSt
  • 从我的图书馆项目启动主项目的活动

    我有 2 个项目 一个是我的主项目 A 另一个是图书馆项目 B 我想从 B 中的活动启动 A 中的活动 我该怎么做 I Tried startActivity getApplicationContext B class but B clas
  • 我是否使用 GMFBridge.DLL 正确预览/捕获流?

    我正在尝试使用 GMFBuilder 以便我可以预览来自网络摄像头的流并定期保存它 而无需重新启动整个图表 然而 我不确定这是否正确 我试图遵循示例 但代码已更新 情况也发生了变化 我尝试创建 WEbcam gt Smart Tee pre
  • WPF;单击一次;双击文件启动;对比2008年

    我的应用程序仅供我和同事使用 因此我不在乎它是 Click Once 还是复制 exe 我希望能够在 Windows 资源管理器中单击具有给定扩展名的文件 然后启动我的程序并打开该文件 我无法让它捕获文件名 表面上的解决方案 Link 我正
  • 将数据框与 data.table 匹配

    我需要使用另一个矩阵作为标识符 ID MA 用来自长数据帧 DF 的信息填充矩阵 MA 我的三个矩阵的想法 MA ID 创建一个标识符来在大 DF 中查找所需的变量 a b c a ID aa ID ab ID ac b ID ba ID
  • 如何访问 __main__ 范围内的全局变量?

    我对 python 中变量的命名空间和范围感到困惑 假设我有一个 test py coding utf 8 author jason if name main global strName print strName 然后 我定义一个名为
  • 包含指针的原子结构

    include
  • 注册本地通知

    我正在开发一个带有phonegap的IOS应用程序 需要为其设置本地通知 该通知将在每个星期五和指定时间重复 还要求用户决定是否接收本地通知 我建议您阅读以下有关该主题的文章 我发现它非常有帮助 http useyourloaf com b
  • Instagram 视频 iPhone 挂钩

    目前最好的解决方案 https stackoverflow com a 21888830 1786820 我正在尝试做得更好 通过使用从 PhotoRoll 中预先选择的视频文件和预加载的标题打开 Instagram 应用程序 在 Flip
  • Native-session 针对代码点火器 2.1.4 进行了修改...这有意义吗?

    有人看到 CI 2 1 4 的修改有问题吗 该类是为 1 7 2 编写的 Github链接 问题 1 regenerate id的用途是什么 是会话 ID 轮换吗 2 session write close的潜在问题是什么 如评论中所示 3
  • 从c#中查找msform上的所有控件

    我正在尝试使用 VBA 可扩展性互操作从 c 查找 msform 上的所有控件 我可以使用以下方式找到所有表格 using System using Microsoft Office Interop Excel using Microsof
  • 如何使用 Python Urwid 制作类似聊天的 UI? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我已经可以使用 gevent 和 Zeromq 实现聊天守护进程 但我想为它们制作一个控制台 UI 我第一次尝试 ncurses 失败了 所以我尝试了Urwid并发现该项目nig
  • 用Java制作数字时钟

    我正在为一个项目制作一个数字时钟 我有四个课程 DigitalTimeUI 这是 JFrame 类 TitlePanel DigitPanel and ColonPanel 它们是所述项目的 JPanel 完成后 它应该看起来像这样 我坚持
  • 无法让 selenium webdriver 在 azure databricks 中工作

    我们有一些 python 脚本可以抓取网站并且运行良好 现在我们想在 Azure Databricks 中执行此操作 我们认为我们可以通过 Databricks 论坛中的以下帖子找到解决方案 但不幸的是 它不起作用 https forums