OSError:在Docker容器中使用python运行selenium时
我最近学习了Docker的基础知识,以及如何创build和运行图像。 我正在尝试创build一个python脚本的图像,这个脚本会将一些数据页面抓取并上传到服务器。 我使用Selenium,Chromium和Windows chromedriver。 我试图在我的Windows机器上构build映像,并能够将它部署在一堆Linux / Windows服务器上。 目前,我只是在同一个Windows机器上构build和运行,直到我运行,但是我仍然得到相同的错误,即使脚本直接在机器上运行。
这是错误的:
Traceback (most recent call last): File "my-app.py", line 796, in <module> startScraper(); File "my-app.py", line 92, in startScraper browser = webdriver.Chrome(chrome_options = options, executable_path = path_to_chromedriver); File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 62, in __init__ self.service.start() File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 74, in start stdout=self.log_file, stderr=self.log_file) File "/usr/local/lib/python3.6/subprocess.py", line 707, in __init__ restore_signals, start_new_session) File "/usr/local/lib/python3.6/subprocess.py", line 1326, in _execute_child raise child_exception_type(errno_num, err_msg) OSError: [Errno 8] Exec format error
它似乎与铬选项有关,但即使我删除所有“添加参数”选项,错误仍然存在,但这里是选项:
options = webdriver.ChromeOptions(); options.binary_location = './chrome-win32/chrome.exe'; options.add_argument('headless') options.add_argument('window-size=1400x1300') options.add_argument('--mute-audio') options.add_argument('--disable-web-security'); options.add_argument('--allow-running-insecure-content'); options.add_argument('--ignore-certificate-errors') options.add_argument('--ignore-ssl-errors') prefs = {"profile.managed_default_content_settings.images":2} options.add_experimental_option("prefs", prefs); path_to_chromedriver = './chromedriver.exe';
有没有什么,我错过了能够在一个容器中运行这个刮刀? 谢谢!
编辑:我忘了添加Dockerfile和我如何生成/运行图像:
Dockerfile:
FROM python:3.6.0 WORKDIR /my-app ADD . /my-app RUN pip install -r requirements.txt ENV NAME Scraper CMD ["python", "My_App.py"]
构build/运行图像: – dockerbuild设-t myapp – docker运行myapp
也许有一些我不知道我失踪的选项?
你正试图在一个Linux容器中运行一个exe文件,这是行不通的。 您将需要在您的Dockerfile中安装chrome和chromedriver,并更新代码以使用正确的path
FROM python:3.6.0 RUN apt update && apt install -y chromedriver WORKDIR /my-app ADD . /my-app RUN pip install -r requirements.txt ENV NAME Scraper CMD ["python", "My_App.py"]
改变你的代码
options = webdriver.ChromeOptions(); options.add_argument('headless') options.add_argument('window-size=1400x1300') options.add_argument('--mute-audio') options.add_argument('--disable-web-security'); options.add_argument('--allow-running-insecure-content'); options.add_argument('--ignore-certificate-errors') options.add_argument('--ignore-ssl-errors') prefs = {"profile.managed_default_content_settings.images":2} options.add_experimental_option("prefs", prefs); path_to_chromedriver = '/usr/lib/chromium/chromedriver';
- Wildfly:AMQ214016:无法从nattednetworking上的客户端创buildnetty连接java.nio.channels.UnresolvedAddressException
- 当networking更换Docker for Windows时,无法从主机连接Docker
- 是否有可能在Visual Studio Code上使用Docker Toolbox?
- 我可以使用docker引擎与最新的pycharm 2016.3.2在Windows 10专业版
- 在Windows 10与Maven的Docker
- Windows 10 Docker Sitespeed.io错误:“$(pwd)”包含本地卷名称的无效字符
- Docker加载映像在Windows 10上无法正常工作
- docker-compose in windows:Unsupported config option for services:'web'
- 在Windows 10上使用Docker安装程序自动构build系统