所以我正在尝试硒的一些东西,我真的希望它能很快。
所以我的想法是,使用无头chrome来运行它可以使我的脚本更快。
首先,这种假设是正确的,还是如果我使用无头驱动程序运行脚本没关系吗?
无论如何,我仍然希望它能够正常运行,但是我不知何故,我尝试了不同的方法,并且大多数人建议它可以按照十月更新中的说明工作
How to configure ChromeDriver to initiate Chrome browser in Headless mode through Selenium?
但是当我尝试这样做时,我得到了奇怪的控制台输出,但它似乎仍然无法正常工作。
感谢任何小费。
答案 0 :(得分:7)
安装并运行容器化的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')
答案 1 :(得分:6)
要运行无头chrome,只需通过--headless
添加chrome_options.add_argument
,即:
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("--headless")
driver = webdriver.Chrome(chrome_options=chrome_options)
start_url = "https://google.com"
driver.get(start_url)
print(driver.page_source.encode("utf-8"))
driver.quit()
# b'<!DOCTYPE html><html xmlns="http://www....
所以我的想法是,使用无头镀铬来运行它会使我 脚本更快。
请尝试使用--disable-extensions
或--disable-gpu
之类的Chrome选项并对其进行基准测试,但我认为并没有太大的改进。
注意:从今天起,无头运行chrome时,您应添加--disable-gpu标志,如果 您正在Windows上运行。参见crbug.com/737678。
答案 2 :(得分:0)
如果您使用的是Linux环境,则可能还必须添加--no-sandbox以及特定的窗口大小设置。如果正确设置用户容器,则Windows中不需要--no-sandbox。
disable-gpu仅在Windows上。其他平台不再需要它。 --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);
答案 3 :(得分:0)
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
它正在运行,并且与无头Chrome一起使用。
答案 4 :(得分:0)
Todo(在无头服务器Debian Linux 9.4上测试):
执行此操作:
# 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
安装硒:
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)
答案 5 :(得分:0)
一旦您安装了硒和Web驱动程序。下面为我在Linux群集上使用无头Chrome进行了工作:
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)