【问题标题】:RuntimeError: This package supports only Linux, MacOSX or Windows platforms error with ChromeDriver and Chrome through Selenium and PythonRuntimeError:此包仅支持 Linux、MacOSX 或 Windows 平台错误与 ChromeDriver 和 Chrome 通过 Selenium 和 Python
【发布时间】:2020-04-26 23:43:47
【问题描述】:

我正在尝试使用 bs4 和 chromedriver 模块进行网络抓取。使用 Visual Studio Code 和 Python 3.7.4。在 Windows 10 上。

from selenium import webdriver
from bs4 import BeautifulSoup
import chromedriver

driver = webdriver.Chrome('path')
driver.get('https://webscraper.io/test-sites/e-commerce/allinone') ### (or any other website)

soup = bs.BeautifulSoup(driver.page_source, 'html.parser')

它给我一个 RuntimeError “这个包只支持 Linux、MacOSX 或 Windows 平台”:

 File "c:/..../scraper.py", line 17, in <module>
   import chromedriver
 File "C:\......\Python\Python37\lib\site-packages\chromedriver\__init__.py", line 16, in <module>
   raise RuntimeError('This package supports only Linux, MacOSX or Windows platforms')
RuntimeError: This package supports only Linux, MacOSX or Windows platforms

此错误的根源可能是什么?我在这里看到了类似的报告 (https://replit.canny.io/bug-reports/p/python-3-selenium) 以及一些关于正在开发的 chromedriver 模块的答案。

【问题讨论】:

    标签: python-3.x selenium web-scraping beautifulsoup selenium-chromedriver


    【解决方案1】:

    你不需要import chromedriver,删除它。你只需要在初始化驱动的时候设置路径为chromedriver.exe

    driver = webdriver.Chrome(executable_path=chromedriver_path_to_chromedriver.exe)
    

    【讨论】:

    • 是的,下载 chromedriver.exe 文件后也可以使用!谢谢。
    【解决方案2】:
    from selenium.webdriver import Chrome
    from bs4 import BeautifulSoup
    driver = Chrome()
    driver.get('https://webscraper.io/test-sites/e-commerce/allinone')
    soup = BeautifulSoup(driver.page_source, 'html.parser')
    

    您不需要导入 chromedriver,因为它包含在 selenium 中。

    【讨论】:

    • 附上解释有助于大家理解解决方案。
    • 谢谢!这会引发以下错误:selenium.common.exceptions.WebDriverException:消息:'chromedriver' 可执行文件需要在 PATH 中。请参阅sites.google.com/a/chromium.org/chromedriver/home。我已将 chromedriver 包含在我的路径环境变量中。我可能做错了什么?
    • 我想问你是否从这里下载了exe? sites.google.com/a/chromium.org/chromedriver 然后,添加路径
    • @说谢谢!你的回答解决了我的问题。出于某种原因,我的 python site-packages 文件夹中有 chromedriver 文件夹,但它们不包含 .exe 文件......我下载了 .exe 文件并将其放在那里的文件夹中,现在它可以工作了。但是,如果我将 chromedriver 路径放在括号内 --> Chrome(),则您的脚本仅适用于我。如果没有路径,它会引发类似的 chromedriver PATH 错误。 顺便问一下,您知道我在运行您的脚本时如何阻止 Chrome 打开吗?我只想打印从网站上抓取的文本?
    • @Say 我将您的答案标记为答案,尽管我认为其他答案也适用于我,因为我已经下载了 .exe 文件。
    【解决方案3】:

    此错误消息...

       import chromedriver
     File "C:\......\Python\Python37\lib\site-packages\chromedriver\__init__.py", line 16, in <module>
       raise RuntimeError('This package supports only Linux, MacOSX or Windows platforms')
    RuntimeError: This package supports only Linux, MacOSX or Windows platforms
    

    ...表示您尝试导入的包 chromedriver 仅支持 Linux、MacOSX 或 Windows 平台,简而言之,这意味着它不需要


    解决方案

    您可以安全地删除 import chromedriver 以消除此错误。


    详情

    要使用 ChromeDriverChrome,您需要从 ChromeDriver Google Storage 下载匹配版本的 ChromeDriver 二进制文件。您可以在以下位置找到一些详细的讨论:

    接下来,将 ChromeDriver 二进制文件放在系统中的任何位置,并通过 KeyChromeDriver绝对路径 /em> / executable_path如下:

    from selenium import webdriver
    
    driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
    driver.get('https://webscraper.io/test-sites/e-commerce/allinone') ### (or any other website)
    

    更新

    当您在 上时,您的代码行将是:

    driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get('https://webscraper.io/test-sites/e-commerce/allinone') ### (or any other website)
    

    如果您不使用 Key / Valueexecutable_path,您的 Python 程序将寻找 chromedriver 在您的系统 PATH 中,如果无法找到 chromedriver 可执行文件的正确匹配变体,您将看到错误:

    WebDriverException: Message: 'Webdrivers' executable may have wrong permissions.
    

    您可以在'Webdrivers' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home找到相关的详细讨论

    【讨论】:

    • 谢谢!如果我将完美路径放置到 executable_path,这将有效,这意味着它以 ...\\chromedriver\\chromedriver.exe 结尾。如果它以 \\chromedriver 结尾,则会抛出错误“selenium.common.exceptions.WebDriverException: Message: '' executable may have wrong permissions。” 顺便问一下,您知道我在运行此代码时如何阻止 Chrome 浏览器启动吗?我只想让 Visual Studio Code 终端打印出我从网站上抓取的文本,而不是每次运行代码时都打开浏览器。
    • @jeppoo1 很高兴能为您提供帮助。请点击投票箭头下方答案旁边的空心复选标记接受答案,这样复选标记就会变为绿色。
    • 我接受了 Say:s 的回答,因为他发现我一开始就没有安装 chromedriver.exe。你的脚本也可以工作,但只有在我正确安装了 chromedriver.exe 之后。
    • 你对我评论中的问题有见解吗(它是粗体)?
    • @jeppoo1 查看更新后的答案,如果有任何其他问题,请告诉我。
    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2019-08-07
    • 2022-07-08
    • 2023-03-20
    相关资源
    最近更新 更多