如何在后台使用 selenium chromedriver 运行 python 脚本 (Windows)?

How to run a python script using selenium chromedriver in background (Windows)?

我正在尝试在 python 中制作后台网络爬虫。我设法为它编写代码,然后我使用 pythonw.exe 应用程序在没有任何控制台 window 的情况下执行它。另外,我 运行 ChromeDriver 处于无头模式。

问题是,它仍然为 ChromeDriver 生成一个控制台 window,上面写着 $ DevTools listening on ...some address.

我怎样才能摆脱这个 window?

即使您将脚本设为 .pyw,当创建新进程 chromedriver.exe 时,也会出现一个控制台 window。 C#中有开启选项CREATE_NO_WINDOW的选项,但是Python绑定中还没有。我正打算分叉 selenium 并自己添加此功能。

目前的解决方案(仅适用于Windows):编辑硒库

转到此文件夹:C:\Users\name\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\selenium\webdriver\common\(到 Python38-32 的路径取决于您安装的 python)。

会有一个名为service.py的文件,您需要编辑如下:

  • 在顶部添加导入语句from subprocess import STDOUT, CREATE_NO_WINDOW
  • 现在(可能在第 72 到 76 行),您必须在函数 subprocess.Popen() 中添加另一个选项 creationflags=CREATE_NO_WINDOW。为了清楚起见,请查看以下代码的前后版本:

编辑前:

self.process = subprocess.Popen(cmd, env=self.env,
                                close_fds=platform.system() != 'Windows',
                                stdout=self.log_file,
                                stderr=self.log_file,
                                stdin=PIPE)

编辑后:

self.process = subprocess.Popen(cmd, env=self.env,
                                close_fds=platform.system() != 'Windows',
                                stdout=self.log_file,
                                stderr=self.log_file,
                                stdin=PIPE
                                creationflags=CREATE_NO_WINDOW) # Here !

注:

复制旧 service.py 文件,以便将来需要时将其替换回来。

我修改了 selenium 库并且能够摆脱这个 window。

在我的例子中,这是修改后的文件路径:

C:\Python37-32\Lib\site-packages\selenium\webdriver\common\service.py

请参阅modified section