Dus ik probeer wat dingen uit met selenium en ik wil echt dat het snel gaat.
Dus mijn gedachte is dat het draaien met headless chrome mijn script sneller zou maken.
Ten eerste is die aanname juist, of maakt het niet uit of ik mijn script uitvoer met een headless driver?
Hoe dan ook, ik wil het nog steeds aan het werk krijgen om headless te werken, maar op de een of andere manier kan ik het niet, ik heb verschillende dingen geprobeerd en de meesten suggereerden dat het zou werken zoals hier in de oktober-update is gezegd
ChromeDriver configureren om Chrome-browser starten in Headless-modus via Selenium?
Maar als ik dat probeer, krijg ik rare console-uitvoer en het lijkt nog steeds niet te werken.
Alle fooien worden op prijs gesteld.
Antwoord 1, autoriteit 100%
Om chrome-headless uit te voeren, voegt u gewoon --headless
toe via chrome_options.add_argument
, d.w.z.:
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"))
driver.quit()
# b'<!DOCTYPE html><html xmlns="http://www....
Dus mijn gedachte is dat het draaien met headless chrome mijn
sneller scripten.
Probeer chrome-opties zoals --disable-extensions
of --disable-gpu
te gebruiken en benchmark het, maar ik zou niet met veel verbetering rekenen.
Referenties: headless-chrome
Opmerking: Vanaf vandaag moet u bij het uitvoeren van chrome headless op Windows moetde
--disable-gpu
vlag
Zie crbug.com/737678
Antwoord 2, autoriteit 9%
Installeer & voer Chrome in containers uit:
docker pull selenium/standalone-chrome
docker run --rm -d -p 4444:4444 --shm-size=2g selenium/standalone-chrome
Verbinden via webdriver.Remote
:
driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.CHROME)
driver.set_window_size(1280, 1024)
driver.get('https://www.google.com')
Antwoord 3, autoriteit 4%
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)
Vervolgens voer ik het script uit op onze lokale computer
➜ python script.py
Running Selenium with Headless Chrome Webdriver
Het werkt en het is met headless Chrome.
Antwoord 4, autoriteit 4%
Als je een Linux-omgeving gebruikt, moet je misschien ook --no-sandbox
toevoegen en ook specifieke instellingen voor venstergrootte. De vlag --no-sandbox
is niet nodig in Windows als u de gebruikerscontainer correct instelt.
Gebruik --disable-gpu
alleen op Windows. Andere platforms hebben het niet langer nodig. De vlag --disable-gpu
is een tijdelijke oplossing voor een paar bugs.
//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);
Antwoord 5
Todo (getest op headless server Debian Linux 9.4):
-
Doe dit:
# 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
-
Selenium installeren:
pip install selenium
en voer deze Python-code uit:
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)
Antwoord 6
Zodra u selenium en webstuurprogramma hebt geïnstalleerd. Hieronder werkte voor mij met headless Chrome op linux-cluster:
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)