Python 如何通过Selenium配置ChromeDriver以无头模式启动Chrome浏览器?
我正在编写一个用于web scrape的python脚本,并且已经开始使用Chromedriver作为其中一个包。我想这是在后台运行没有任何弹出窗口。我在chromedriver上使用了“headless”选项,它似乎可以不显示浏览器窗口,但是,我仍然看到.exe文件在运行。请看我所说内容的屏幕截图 这是我用来启动ChromeDriver的代码:Python 如何通过Selenium配置ChromeDriver以无头模式启动Chrome浏览器?,python,selenium,selenium-webdriver,selenium-chromedriver,google-chrome-headless,google-chrome,headless,windows,linux,Python,Selenium,Selenium Webdriver,Selenium Chromedriver,Google Chrome Headless,Google Chrome,Headless,Windows,Linux,我正在编写一个用于web scrape的python脚本,并且已经开始使用Chromedriver作为其中一个包。我想这是在后台运行没有任何弹出窗口。我在chromedriver上使用了“headless”选项,它似乎可以不显示浏览器窗口,但是,我仍然看到.exe文件在运行。请看我所说内容的屏幕截图 这是我用来启动ChromeDriver的代码: options = webdriver.ChromeOptions() options.add_experimental_option("exclud
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
options.add_argument('headless')
options.add_argument('window-size=0x0')
chrome_driver_path = "C:\Python27\Scripts\chromedriver.exe"
我尝试将选项中的窗口大小更改为0x0,但我不确定是否执行了任何操作,因为仍会弹出.exe文件
你知道我该怎么做吗
我正在使用Python 2.7供参考
选项。添加参数('--headless')
选项。添加_参数('--disable GPU')
应该是这样的:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu') # Last I checked this was necessary.
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)
这对我使用Python3.6是有效的,我相信它也适用于2.7
更新2018-10-26:现在你可以这样做:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(CHROMEDRIVER_PATH, options=options)
因此,在将我的代码更正为:
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
options.add_argument('--disable-gpu')
options.add_argument('--headless')
chrome_driver_path = "C:\Python27\Scripts\chromedriver.exe"
运行脚本时仍会出现.exe文件。虽然这确实消除了一些额外的输出,告诉我“无法启动GPU进程”
最终起作用的是使用.bat文件运行我的Python脚本
所以基本上
Options()
类的实例将属性设置为true
,如下所示:
- 有效代码块:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.headless = True driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe') driver.get("http://google.com/") print ("Headless Chrome Initialized") driver.quit()
2018年4月23日的答复更新 由于方法的可用性,以编程方式在模式中调用变得更加容易,如下所示:
- 文件:
set_headless(headless=True) Sets the headless argument Args: headless: boolean value indicating to set the headless option
- 示例代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.set_headless(headless=True) driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe') driver.get("http://google.com/") print ("Headless Chrome Initialized") driver.quit()
2018年3月30日的原始答复 <>在使用SeleClient 3.11 .x、ChrimVelueV2.38和谷歌浏览器V65.0.33 25.181时,在<强>无头< /强>模式下,您必须考虑以下几点:
- 您需要添加参数--headless以在headless模式下调用Chrome
- 对于Windows操作系统,您需要添加参数
--禁用gpu
- 根据
标志——Linux系统和MacOS上不需要禁用gpu
- 根据
标志在Windows系统上也将变得不必要——禁用gpu
- 最大化的视口需要参数
开始最大化
- 以下是有关详细信息的链接
- 您可能需要添加参数
以绕过操作系统安全模型--no sandbox
- 有效代码块:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("--headless") # Runs Chrome in headless mode. options.add_argument('--no-sandbox') # Bypass OS security model options.add_argument('--disable-gpu') # applicable to windows os only options.add_argument('start-maximized') # options.add_argument('disable-infobars') options.add_argument("--disable-extensions") driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\path\to\chromedriver.exe') driver.get("http://google.com/") print ("Headless Chrome Initialized on Windows OS")
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("--headless") # Runs Chrome in headless mode. options.add_argument('--no-sandbox') # # Bypass OS security model options.add_argument('start-maximized') options.add_argument('disable-infobars') options.add_argument("--disable-extensions") driver = webdriver.Chrome(chrome_options=options, executable_path='/path/to/chromedriver') driver.get("http://google.com/") print ("Headless Chrome Initialized on Linux OS")
- 有效代码块:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("--headless") # Runs Chrome in headless mode. options.add_argument('--no-sandbox') # Bypass OS security model options.add_argument('--disable-gpu') # applicable to windows os only options.add_argument('start-maximized') # options.add_argument('disable-infobars') options.add_argument("--disable-extensions") driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\path\to\chromedriver.exe') driver.get("http://google.com/") print ("Headless Chrome Initialized on Windows OS")
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("--headless") # Runs Chrome in headless mode. options.add_argument('--no-sandbox') # # Bypass OS security model options.add_argument('start-maximized') options.add_argument('disable-infobars') options.add_argument("--disable-extensions") driver = webdriver.Chrome(chrome_options=options, executable_path='/path/to/chromedriver') driver.get("http://google.com/") print ("Headless Chrome Initialized on Linux OS")
奥特罗
tl;博士
以下是该故事的链接。尝试使用ChromeDriverManager
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.set_headless()
browser =webdriver.Chrome(ChromeDriverManager().install(),chrome_options=chrome_options)
browser.get('https://google.com')
# capture the screen
browser.get_screenshot_as_file("capture.png")
更新日期:2020年8月20日——现在很简单!
不是受支持的浏览器
解决方案:
Open Browser ${event_url} ${BROWSER} options=add_argument("--no-sandbox"); add_argument("--ignore-certificate-errors"); add_argument("--disable-dev-shm-usage'")
不要忘记在
${BROWSER}
选项之间添加空格以上解决方案不适用于具有cloudflare保护的网站,例如:https://paxful.com/fr/buy-bitcoin
修改代理,如下所示:
options.add_参数(“用户代理=Mozilla/5.0(Windows NT 6.1;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/84.0.4147.125 Safari/537.36”)
在此处找到修复程序:
更新
在我的情况下效果很好:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.headless = True
driver = webdriver.Chrome(CHROMEDRIVER_PATH, options=options)
2020年刚刚改变。对我来说很好。谢谢!不幸的是,这并没有解决问题。我已经发布了我对你所做事情的回答。感谢您的帮助最新更新在将:options=options()替换为options=webdriver时起作用。ChromeOptions()更新:kwarg
chrome\u options
对于chrome,不推荐使用options
可能与@Basj重复此问题比您链接的问题早一年。如果有的话,链接的问题可能与此重复。这里需要再编辑一次使用chrome\u options=options
notoptions=options
另一个:使用options。添加参数(“--headless”)
notoptions.headless=True
@DebanjanB,当我使用你2018年10月13日的代码时,它会执行,但引发以下错误:“‘分析元元素内容时出错:’;’不是有效的键值对分隔符。请改用”“,”,“,”和“脚本只能关闭由它打开的窗口。”
和“主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验造成有害影响…
对于网站https://test.plexonline.com
-带有“head”的浏览器执行时不会出现错误。。。有什么想法吗?@Python\u Learner\u DK竞争错误堆栈跟踪可能会给我们一些线索。你能在你的二进制版本中提出一个新问题吗?@Jortega,chrome\u options已经贬值,因此options=options是正确的。这些是需要设置的chrome选项
System.setProperty("webdriver.chrome.driver",
"D:\\Lib\\chrome_driver_latest\\chromedriver_win32\\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--allow-running-insecure-content");
chromeOptions.addArguments("--window-size=1920x1080");
chromeOptions.addArguments("--disable-gpu");
chromeOptions.setHeadless(true);
ChromeDriver driver = new ChromeDriver(chromeOptions);
from selenium import webdriver
options = webdriver.ChromeOptions()
options.headless = True
driver = webdriver.Chrome(CHROMEDRIVER_PATH, options=options)