Selenium mit Chrome-Treiber auf Ubuntu/Debian einrichten
- Einrichten und Ausführen von Chrome und Selenium auf Ubuntu oder Debian
- Der Leitfaden basiert auf Ubuntu 22.04
- Letzte Änderung: 4. Juni 2024
# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
Inhaltsverzeichnis
- Schritt 1: Aktualisieren Sie bei Bedarf alle Pakete
- Schritt 2: Laden Sie das stabile Google-Chrome-Paket herunter
- Schritt 3: Google-Chrome installieren
- (Optional) Wenn nach Schritt 3 ein Abhängigkeitsproblem auftritt, führen Sie den folgenden Befehl aus und versuchen Sie es erneut mit Schritt 3
- Schritt 4: Überprüfen Sie die installierte Google-Chrome-Version
- Schritt 5: Installieren Sie Selenium, Webdriver-Manager
- Schritt 6: Erstellen Sie hello_world
- Schritt 7: Führen Sie test.py aus und prüfen Sie, ob Google Chrome verfügbar ist
- Schritt 8: Das ist alles. Genießen Sie es.:)
- FAQ :)
- 1. Meine VM läuft in einer Cloud-Umgebung. Wie sollte ich in diesem Fall Chrome verwenden?
- 2. Ich habe ein Python-Skript mit Chrome und Selenium geschrieben und es mit crontab geplant, aber cron funktioniert nicht richtig. Was soll ich tun?
- 3. Der Grund für die unterschiedlichen Arten des Ladens von ChromeDriver ist wie folgt. Was sind beispielsweise die Unterschiede zwischen (1) und (2)?
- 4. Google-Chrome wurde aktualisiert. Wo kann ich ChromeDriver herunterladen und wie installiere ich es?
- 4.1. Gehen Sie zur Chrome-Treiber-Download-Seite.
- 4.2. Laden Sie den ChromeDriver herunter.
- 4.3. Installieren Sie den ChromeDriver.
- 4.4. Beispielverwendung in Python:
- 5. Wie kann ich verhindern, dass das Google-Chrome-Paket unter Ubuntu automatisch aktualisiert wird?
Schritt 1: Aktualisieren Sie bei Bedarf alle Pakete
# apt update
# apt upgrade
Schritt 2: Laden Sie das stabile Paket „google-chrome“ herunter
# wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
Schritt 3: „Google-Chrome“ installieren
# apt-get install -y ./google-chrome-stable_current_amd64.deb
Schritt 4: Überprüfen Sie die installierte „Google-Chrome“-Version
# google-chrome --version
Google Chrome 123.0.6312.86
Schritt 5: Installieren Sie Selenium, Webdriver-Manager
- https://pypi.org/project/webdriver-manager/
# pip3 install selenium
# pip3 install webdriver-manager
Schritt 6: hello_world erstellen
- Mit Chrome Headless ausführen
# vim test.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
options = Options ()
options.add_argument( ' --headless ' )
options.add_argument( ' --no-sandbox ' )
options.add_argument( ' --disable-dev-shm-usage ' )
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get( " https://python.org " )
print(driver.title)
driver.close ()
- Mit der Chrome-GUI ausführen
# vim test.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
options = Options ()
# options.add_argument('--headless')
# options.add_argument('--no-sandbox')
options.add_argument( ' --disable-dev-shm-usage ' )
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get( " https://python.org " )
print(driver.title)
driver.close ()
Schritt 7: Führen Sie test.py aus und prüfen Sie, ob „google-chrome“ verfügbar ist
# python3 test.py
Welcome to Python.org
Schritt 8: Das ist alles. Genießen Sie es:)
FAQ :)
1. Meine VM läuft in einer Cloud-Umgebung. Wie sollte ich in diesem Fall Chrome verwenden?
- In einer Cloud-Umgebung wird Chrome normalerweise im Headless-Modus verwendet.
- Mit anderen Worten: In einer Cloud-Umgebung unterstützen VMs möglicherweise keinen Anzeigemodus, insbesondere kostenlose VMs (kostenlose Stufen).
- Wenn Ihre VMs jedoch X-Windows oder Display unterstützen, können Sie auch den GUI-Modus verwenden
2. Ich habe ein Python-Skript mit Chrome und Selenium geschrieben und es mit crontab geplant, aber cron funktioniert nicht richtig. Was soll ich tun?
- Bei vielen Suchergebnissen scheint es, dass Sie den Anzeigemodus in Ihrem Skript auf 0 festlegen müssen, wenn Sie es über cron ausführen.
- So was:)
*/1 * * * * export DISPLAY=:0; python ~/selenium_script.py
- Typische VMs, auf denen Chrome ausgeführt wird, werden jedoch im Headless-Modus ausgeführt, in dem die Anzeigeeinstellungen keine Rolle spielen.
- Das Problem kann sein, dass bei der Ausführung eines Cronjobs der Cron-Pfad nicht über den Chromedriver-Pfad im Cron-Pfad verfügt.
- Sie müssen also den Chromedriver-Pfad in Cron oder Ihrem Launcher (Skript) angeben.
- Wenn Sie den Pfad zum Chromedriver nicht kennen, können Sie ihn mit dem folgenden Befehl finden (oder indem Sie den WDM_LOG-Modus festlegen):
# find / -name "chromedriver"
/root/.cache/selenium/chromedriver
/root/.cache/selenium/chromedriver/linux64/117.0.5938.92/chromedriver
/root/.wdm/drivers/chromedriver
/root/.wdm/drivers/chromedriver/linux64/117.0.5938.92/chromedriver-linux64/chromedriver
- Anschließend können Sie den Pfad in crontab festlegen und wie folgt ausführen:)
*/05 * * * * export PATH=$PATH:/root/.wdm/drivers/chromedriver/linux64/117.0.5938.92/chromedriver-linux64/chromedriver; root /data/test.py
Oder Sie können ein Bash-Skript erstellen, das das Python-Skript lädt und den Pfad angibt:
# vim test_loader.sh
#!/bin/bash
export PATH=$PATH:/root/.wdm/drivers/chromedriver/linux64/117.0.5938.92/chromedriver-linux64/chromedriver
...
...
python3 test.py
3. Der Grund für die unterschiedlichen Arten des Ladens von ChromeDriver ist wie folgt. Was sind beispielsweise die Unterschiede zwischen (1) und (2)?
(1)
from selenium import webdriver
driver = webdriver.Chrome('/home/user/drivers/chromedriver')
(2)
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
- (1) Lädt den Chrome-Treiber mit dem Web-Treiber von Selenium. In diesem Fall müssen Sie die Chromedriver-Binärdatei herunterladen, sie irgendwo auf Ihrem PC entpacken und den Pfad zu diesem Treiber festlegen. (Kompatibel mit Selenium 4.x und niedriger.)
- (2) Führt Chrome mit dem Webdriver-Manager aus. Wenn Sie das Webdriver-Manager-Paket verwenden, ist es nicht erforderlich, die Chromedriver-Binärdatei separat herunterzuladen.
Installationsmanager:
pip install webdriver-manager
Verwendung mit Chrome
Selen 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
Selen 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
- Weitere Einzelheiten finden Sie unter https://pypi.org/project/webdriver-manager/.
4. Google-Chrome wurde aktualisiert. Wo kann ich ChromeDriver herunterladen und wie installiere ich es?
- 4. Juni 2024, die neueste Version von Chrome ist „ 125.0.6422.142 “
4.1. Gehen Sie zur ChromeDriver-Downloadseite.
- Laden Sie den Chrome-Treiber mit derselben Version wie Ihr aktualisiertes Chrome herunter.
- Klicken Sie auf den Link im Chrome for Testing-Verfügbarkeits-Dashboard: https://chromedriver.chromium.org/downloads
- https://googlechromelabs.github.io/chrome-for-testing/, um den Chrome-Treiber zu finden, der zu Ihrer aktualisierten Chrome-Version passt.
4.2. Laden Sie den ChromeDriver herunter.
- Laden Sie die Chrome-Treiberversion herunter, die zu Ihrem Chrome passt.
- https://googlechromelabs.github.io/chrome-for-testing/
For Mac M1, download mac-arm64.
- For Chrome version: https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.141/mac-arm64/chromedriver-mac-arm64.zip
For General Linux distributions, download linux64.
- For Chrome version: https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.141/linux64/chromedriver-linux64.zip
4.3. Installieren Sie den ChromeDriver.
- Da es sich bei Chrome Driver um eine Binärdatei handelt, gibt es keinen separaten Installationsprozess.
- Extrahieren Sie das Zip-Archiv und kopieren Sie die Chromedriver-Datei in das Verzeichnis, in dem sich Chrome Driver befinden soll.
Für Mac ist der Standardspeicherort für Chromedriver /usr/local/bin.
% sw_vers
ProductName: macOS
ProductVersion: 13.0
BuildVersion: 22A380
% ls -al /usr/local/bin/chromedriver
-rwxr-xr-x 1 root wheel 17314928 Mar 25 13:23 /usr/local/bin/chromedriver
Wenn Sie es in einem benutzerdefinierten Verzeichnis ablegen möchten:
- Platzieren Sie die Datei „chromedriver“ am gewünschten Speicherort. Beispiel: „/Users/mymac/data/chromedrv/chromedriver“.
4.4. Beispielverwendung in Python:
from selenium import webdriver
from selenium . webdriver . chrome . service import Service
def chrome_webdriver ():
chromedriver_path = '/Users/mymac/data/chromedrv/chromedriver'
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/123.0.0.0 Safari/537.36'
options = webdriver . ChromeOptions ()
options . add_argument ( "--start-maximized" )
options . add_argument ( '--headless' )
options . add_argument ( f'user-agent= { user_agent } ' )
service = Service ( executable_path = chromedriver_path )
driver = webdriver . Chrome ( service = service , options = options )
return driver
url = 'http://www.google.com'
driver = chrome_webdriver ()
driver . get ( url )
driver . implicitly_wait ( 10 )
print ( driver . page_source )
5. Wie kann ich verhindern, dass das Paket „google-chrome“ unter Ubuntu automatisch aktualisiert wird?
- Um zu verhindern, dass Google Chrome unter Ubuntu automatisch aktualisiert wird, können Sie das Chrome-Paket mithilfe von Paket-Pinning oder apt-mark festhalten. Dies wird jedoch grundsätzlich nicht empfohlen
- Beachten Sie, dass die Deaktivierung der automatischen Updates von Chrome die Sicherheit beeinträchtigen kann. Aus Gründen der Sicherheit und Funktionalität wird im Allgemeinen empfohlen, Updates ordnungsgemäß zu verwalten.
Verwendung von apt-mark:
- Halten Sie das Paket zurück, um Aktualisierungen zu verhindern:
# apt-mark hold google-chrome-stable
google-chrome-stable set on hold.
- Um Updates wieder zuzulassen, geben Sie die Sperre auf:
# apt-mark unhold google-chrome-stable
Canceled hold on google-chrome-stable.