使用无头Chrome Web驱动程序运行Selenium

kdfy810k  于 2022-12-06  发布在  Go
关注(0)|答案(7)|浏览(228)

所以我正在尝试一些 selenium 的东西,我真的希望它很快。
所以我的想法是用headless chrome运行它会让我的脚本更快。
首先,这个假设是正确的吗?或者,如果我用一个无头驱动程序运行我的脚本,这是否无关紧要?
无论如何,我仍然想让它的工作运行无头,但我不知何故不能,我尝试了不同的东西,大多数建议,它将工作在这里说,在10月更新
How to configure ChromeDriver to initiate Chrome browser in Headless mode through Selenium?
但是当我尝试这样做时,我得到了奇怪的控制台输出,它似乎仍然不工作。
任何小费都很感谢。

ni65a41a

ni65a41a1#

要运行chrome-headless,只需通过chrome_options.add_argument添加--headless,即:

from selenium import webdriver 
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
#chrome_options.add_argument("--disable-extensions")
#chrome_options.add_argument("--disable-gpu")
#chrome_options.add_argument("--no-sandbox") # linux only
chrome_options.add_argument("--headless")
# chrome_options.headless = True # also works
driver = webdriver.Chrome(options=chrome_options)
start_url = "https://duckgo.com"
driver.get(start_url)
print(driver.page_source.encode("utf-8"))
# b'<!DOCTYPE html><html xmlns="http://www....
driver.quit()
  • 所以我的想法是用无头Chrome运行它会让我的脚本更快。*

尝试使用chrome选项,如--disable-extensions--disable-gpu,并对它进行基准测试,但我不会指望有太大的改进。
参考:headless-chrome

cmssoen2

cmssoen22#

安装并运行容器化Chrome:

docker pull selenium/standalone-chrome
docker run --rm -d -p 4444:4444 --shm-size=2g selenium/standalone-chrome

使用webdriver.Remote连接:

driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.CHROME)
driver.set_window_size(1280, 1024)
driver.get('https://www.google.com')
wljmcqd8

wljmcqd83#

from time import sleep

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless")

driver = webdriver.Chrome(executable_path="./chromedriver", options=chrome_options)
url = "https://stackoverflow.com/questions/53657215/running-selenium-with-headless-chrome-webdriver"
driver.get(url)

sleep(5)

h1 = driver.find_element_by_xpath("//h1[@itemprop='name']").text
print(h1)

然后在本地计算机上运行脚本

➜ python script.py
Running Selenium with Headless Chrome Webdriver

它是工作,它是与Headless Chromium 。

ev7lccsx

ev7lccsx4#

如果您使用的是Linux环境,可能还需要添加--no-sandbox以及特定的窗口大小设置。如果您正确设置了用户容器,则在Windows上不需要--no-sandbox标志。
仅在Windows上使用--disable-gpu。其他平台不再需要它。--disable-gpu标志是一些错误的临时解决方法。

//Headless chrome browser and configure
            WebDriverManager.chromedriver().setup();
            ChromeOptions chromeOptions = new ChromeOptions();
            chromeOptions.addArguments("--no-sandbox");
            chromeOptions.addArguments("--headless");
            chromeOptions.addArguments("disable-gpu");
//          chromeOptions.addArguments("window-size=1400,2100"); // Linux should be activate
            driver = new ChromeDriver(chromeOptions);
r6l8ljro

r6l8ljro5#

待办事项(在无头服务器Debian Linux 9.4上测试):
1.请执行以下操作:

# install chrome
curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
echo "deb [arch=amd64]  http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
apt-get -y update
apt-get -y install google-chrome-stable

# install chrome driver
wget https://chromedriver.storage.googleapis.com/77.0.3865.40/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
mv chromedriver /usr/bin/chromedriver
chown root:root /usr/bin/chromedriver
chmod +x /usr/bin/chromedriver

1.安装Selenium:

pip install selenium

运行下面的Python代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("no-sandbox")
options.add_argument("headless")
options.add_argument("start-maximized")
options.add_argument("window-size=1900,1080"); 
driver = webdriver.Chrome(chrome_options=options, executable_path="/usr/bin/chromedriver")
driver.get("https://www.example.com")
html = driver.page_source
print(html)
eit6fx6z

eit6fx6z6#

一旦你有 selenium 和网络驱动程序安装。下面的工作为我与无头Chrome在linux集群:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("--disable-extensions")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
options.add_experimental_option("prefs",{"download.default_directory":"/databricks/driver"})
driver = webdriver.Chrome(chrome_options=options)
8hhllhi2

8hhllhi27#

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(executable_path=r"C:\Program 
Files\Google\Chrome\Application\chromedriver.exe", options=chrome_options)

这对我来说是可以的。

相关问题