在Python中启动google-chrome的正确方法

时间:2019-07-13 22:57:38

标签: python google-chrome subprocess

我正在尝试使用子进程从python启动google-chrome,但到目前为止没有成功。基本上,我有一个这样的bash命令:

-----------------------------------------------------------------
| geo                 | time      | measure | val_cnt | val_rto |
=================================================================
| "Comrie West"       | "2001-Q2" | "Count" | "0"     | ""      |
| "Comrie West"       | "2001-Q2" | "Count" | "10"    | ""      |
| "Comrie West"       | "2001-Q2" | "Count" | "5"     | ""      |
| ...                 | ...       | ...     | ...     | ...     |
-----------------------------------------------------------------

运行正常。我看到一个带有标签TMP_PROFILE_DIR=$(mktemp -d -t chrome.XXXXXXXXXX) google-chrome \ --no-first-run \ --disable-gpu \ --disable-translate \ --disable-default-apps \ --disable-extensions \ --disable-background-networking \ --disable-sync \ --metrics-recording-only \ --safebrowsing-disable-auto-update \ --disable-setuid-sandbox \ --user-data-dir=${TMP_PROFILE_DIR} \ --remote-debugging-port=9222 'about:blank' 且没有配置文件的新Chrome窗口。我想在Python中重现它:

about:blank

出现窗口(但与bash情况不同),唯一得到的是此消息:

import tempfile
import subprocess

CHROME_FLAGS = [
    '--start-maximized',
    '--no-first-run',
    '--disable-gpu',
    '--disable-translate',
    '--disable-default-apps',
    '--disable-extensions',
    '--disable-background-networking',
    '--disable-sync',
    '--metrics-recording-only',
    '--safebrowsing-disable-auto-update',
    '--disable-setuid-sandbox',
    '--no-sandbox',
    '--mute-audio',
]

direc = tempfile.TemporaryDirectory()

args = ['google-chrome'] \
    + CHROME_FLAGS \
    + ['--remote-debugging-port=9222', '--user-data-dir=%s' % direc.name, "'about:blank'"]

process = subprocess.Popen(args,
    close_fds=True,
    shell=True
)

code = self.process.wait()

我什至无法从Python中杀死窗口。任何想法如何正确启动google-chrome并从Python终止它?

1 个答案:

答案 0 :(得分:1)

我将selenium用于网络爬虫。

from selenium import webdriver
website = "https://www.google.com/"
driver = webdriver.Firefox()  # Use .Chrome() for Chrome
driver.get(website)

我确定您需要将geckodriver放入路径。