Detailliertes Tutorial zum Ausführen von Selenium+Chromedriver auf dem Server

Detailliertes Tutorial zum Ausführen von Selenium+Chromedriver auf dem Server

1. Einleitung

Ich möchte Selenium verwenden, um Daten von einer Website zu scrapen, aber manchmal treten bei der Verwendung von Phantomjs Fehler auf. Chrome verfügt jetzt auch über einen Headless-Betriebsmodus, sodass Phantomjs nicht mehr benötigt werden.

Bei der Installation von Chrome auf dem Server sind jedoch einige Fehler aufgetreten. Hier ist eine Zusammenfassung des gesamten Installationsvorgangs

2. Installieren Sie Chrome auf Ubuntu

# Installieren Sie Google Chrome
# https://askubuntu.com/questions/79280/how-to-install-chrome-browser-properly-via-command-line
sudo apt-get installiere libxss1 libappindicator1 libindicator7
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*.deb # Könnte „Fehler“ anzeigen, behoben in der nächsten Zeile
sudo apt-get install -f

Es sollte jetzt installiert sein. Testen Sie es, indem Sie den folgenden Befehl ausführen:

Google Chrome – Headless – Remote-Debugging-Port = 9222 https://chromium.org – Disable-Gpu

Hier verwenden wir den Headless-Modus für Remote-Debugging. Die meisten Ubuntu-Rechner haben keine GPU, daher wird --disable-gpu verwendet, um Fehler zu vermeiden.
Anschließend können Sie eine weitere SSH-Verbindung zum Server öffnen und über die Kommandozeile auf den lokalen Port 9222 des Servers zugreifen:

Locken http://localhost:9222

Wenn die Installation erfolgreich war, werden Ihnen Debuginformationen angezeigt. Ich werde hier jedoch einen Fehler melden. Im Folgenden finden Sie die Lösung für den Fehler.

1) Mögliche Fehlerlösungen

Nach dem Ausführen des obigen Befehls erhalten Sie möglicherweise eine Fehlermeldung, dass Chrome nicht als Root ausgeführt werden kann. Verwenden Sie derzeit die folgenden Einstellungen, um Chrome einzurichten

1. Suchen Sie die Google Chrome-Datei

Mein Standort ist /opt/google/chrome/

2. Öffnen Sie die Google Chrome-Datei mit vi

vi /opt/google/chrome/google-chrome

Gefunden in der Datei

exec -a "$0" "$HERE/chrome" "$@"

3. Fügen Sie am Ende –user-data-dir –no-sandbox hinzu. Der gesamte Shell-Befehl lautet

exec -a "$0" "$HERE/chrome" "$@" --user-data-dir --no-sandbox

4. Öffnen Sie Google Chrome erneut und Sie können normal darauf zugreifen!

3. Installieren Sie den Chrome-Treiber Chromedriver

Chromedriver herunterladen

Chromedriver bietet eine API für den Betrieb von Chrome und ist eine Brücke für Selenium zur Steuerung von Chrome.

Am besten installieren Sie die neueste Version von Chromedriver. Ich erinnere mich, dass ich am Anfang nicht die neueste Version installiert habe und ein Fehler gemeldet wurde. Es gibt kein Problem mit der neuesten Version von Chromedriver. Die neueste Version finden Sie unter der folgenden Adresse
https://sites.google.com/a/chromium.org/chromedriver/downloads

Als ich diesen Artikel schrieb, war die neueste Version 2.37

wget https://chromedriver.storage.googleapis.com/2.37/chromedriver_linux64.zip
Entpacken Sie chromedriver_linux64.zip

An diesem Punkt ist die serverseitige, schnittstellenfreie Version von Chrome installiert.

4. So verwenden Sie die Nicht-Schnittstellenversion von Chrome

von Selenium importiere Webtreiber
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument("user-agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/62.0.3202.94 Safari/537.36'")
wd = Webtreiber.Chrome (Chrome-Optionen = Chrome-Optionen, ausführbarer Pfad = „/home/Chrome/Chrome-Treiber“)

wd.get("https://www.163.com")

Inhalt = wd.page_source.encode('utf-8')
Inhalt drucken

wd.quit()

Hier kann der dritte Einstellungsparameter in chrome_options verhindern, dass die Website erkennt, dass Sie den randlosen Modus zum Anti-Crawlen verwenden.

Die anderen beiden Einstellungen unten öffnen Chrome mit einer Benutzeroberfläche auf dem Desktop-Linux-System oder Mac-System, wenn sie nicht festgelegt sind. Beim Debuggen können Sie die folgenden beiden Zeilen auskommentieren und Chrome mit einer Benutzeroberfläche zum Debuggen des Programms verwenden.

chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

5. Referenzen

https://jiayi.space/post/zai-ubuntufu-wu-qi-shang-shi-yong-chrome-headless
https://blog.csdn.net/u013703963/article/details/71083802

Zusammenfassen

Dies ist das Ende dieses Artikels über Selenium+Chromedriver, der auf dem Server ausgeführt wird. Weitere Informationen über Selenium+Chromedriver, der auf dem Server ausgeführt wird, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Python verwendet Selenium, um die asynchron geladene Datenmethode von Taobao zu crawlen
  • Beispielcode zur Selenium-Ausnahmebehandlung in Python
  • Detaillierte Erklärung zur Verwendung von Selenium Chrome unter Linux
  • Detaillierte Erklärung der Ausführung von Javascript-Skriptparametern und Rückgabewerten durch Selenium
  • Python + Selenium + Crontab zur Realisierung der täglichen automatischen Einstempelfunktion
  • Detaillierte Erläuterung der Konfigurationsoptionen, wenn Selenium Chrome startet
  • Selenium: Analyse häufiger Ausnahmen und Demonstration von Lösungen

<<:  So migrieren Sie den MySQL-Speicherort auf eine neue Festplatte

>>:  JavaScript Canvas realisiert dynamische Punkt- und Linieneffekte

Artikel empfehlen

JavaScript implementiert Feuerwerkseffekte mit Soundeffekten

Ich habe eine halbe Stunde gebraucht, um den Code...

Analyse der Prinzipien und der Nutzung von Docker-Container-Datenvolumes

Was ist ein Containerdatenvolumen? Wenn sich die ...

Lösung für die geringe Schreibeffizienz von unter AIX gemountetem NFS

Von NFS bereitgestellte Dienste Mounten: Aktivier...

JavaScript ist unzuverlässig undefiniert

undefined Wenn wir in JavaScript feststellen möch...

So übertragen Sie Dateien zwischen Windows und Linux

Dateiübertragung zwischen Windows und Linux (1) V...

Implementierung des Markdown-Renderings in einer Vue-Einzelseitenanwendung

Beim Rendern von Markdown habe ich zuvor den Vors...

Anwendung von HTML und CSS in Flash

Anwendung von HTML und CSS in Flash: Ich habe zufä...

MySQL-Datenbank-JDBC-Programmierung (Java stellt eine Verbindung zu MySQL her)

Inhaltsverzeichnis 1. Grundvoraussetzungen für di...

Meta-Tags einfach erklärt

Der META-Tag, umgangssprachlich auch als Tag beze...

Lernen Sie, benutzerdefinierte Hooks in React zu erstellen

1. Was sind benutzerdefinierte Hooks Wiederverwen...