Installieren Sie Chrome in der Befehlszeile von Sakura VPS (Ubuntu) und starten Sie Chrome mit Python über das virtuelle Display und Selen

Zweck

Das Schreiben von Web-Scraping-Code, für den POST erforderlich ist, z. B. eine Anmeldeseite, ist mühsam. Ich habe Selen verwendet, um diesen Ärger zu beseitigen. Es führt den Browser automatisch über Selen aus, automatisiert Vorgänge, die POST erfordern, und führt Web-Scraping durch.

Umgebung

Betriebssystem: Ubuntu 16.04 (Sakura VPS)

Schritt 1) Installieren Sie Chrome über die Befehlszeile

mkdir download
cd download
wget  https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
rm google-chrome-stable_amd64.deb

(Referenz-URL) http://bit.ly/2bBK3Ku

Schritt 2) Vorbereiten des Starts von Google Chrome Sie können es starten, indem Sie in der Befehlszeile google-chrome eingeben. Wenn Sie es jedoch in diesem Zustand starten, sind zwei Probleme aufgetreten. Die beiden sind

  1. Die Abhängigkeit ist unterbrochen.
  2. Es gibt (natürlich) keinen Bildschirm. ist. Die Details der Aktion werden unten gezeigt.

In CLI können Sie es starten, indem Sie google-chrome eingeben. Wenn Sie es jedoch in diesem Zustand starten, sind zwei Probleme aufgetreten. Die beiden sind

  1. Die Abhängigkeit ist unterbrochen.
  2. Es gibt (natürlich) keinen Bildschirm. ist. Die Details der Aktion werden unten gezeigt.

Problem 1) Abhängigkeitsreparatur

Es entsprach dem folgenden Befehl.

sudo apt-get update
sudo apt-get -f install

Problem 2) Es gibt keinen Bildschirm

((Vorschlag 1)) GUI Desktop </ b>

Sie können den GUI-Desktop mit dem folgenden Befehl installieren, aber ich habe ihn gestoppt, da er anscheinend lange dauert.

GUI-Desktop-Installation


sudo apt-get -y install ubuntu-desktop

((Vorschlag 2)) Installieren Sie die virtuelle Anzeige </ b>

Installieren Sie eine virtuelle Anzeige und führen Sie Chrome auf der virtuellen Anzeige aus.

Als Verfahren,

① Installieren Sie xvfb der virtuellen Anzeige ② Installieren Sie Selenium und Pyvirtualdisplay, um Chrome von Python aus zu betreiben ③ Schreiben Sie ein Chrome-Startprogramm mit Python

ist.

Der spezifische Arbeitsablauf ist in Schritt 3 beschrieben.

Schritt 3) Starten Sie Google Chrome

Schritt ①) Installieren Sie xvfb </ b>

Ich habe die virtuelle Anzeige xvfb mit dem folgenden Befehl installiert.

xvfb Installation


sudo apt-get install xvfb
sudo apt-get install unzip
wget -N http://chromedriver.storage.googleapis.com/2.20/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
chmod +x chromedriver
sudo mv -f chromedriver/usr/local/share/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

Vorgehensweise ②) Installation von Selen usw. </ B>

Um Chrome über Python zu betreiben, installieren Sie das Selenium-Paket für den Betrieb von Chrome und das pyvirtualdisplay für den Betrieb des virtuellen Displays xvfb.

Selen ist eines der Testwerkzeuge für WEB-Anwendungen. Anstatt dass Menschen den Browser steuern, steuert Selenium den Browser. pyvirtualdisplay ist ein Paket zum Betreiben der virtuellen Anzeige xvfb mit Python.

Ich habe beide mit dem folgenden Code installiert. (Da pip3 nicht installiert wurde, wird pip3 im Voraus installiert.)

sudo apt-get install python3-setuptools
sudo easy_install3 pip
pip3 install pyvirtualdisplay selenium

Schritt ③) Installieren Sie xvfb </ b>

Ich habe den folgenden Code ausgeführt.

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()
browser = webdriver.Chrome()
browser.get('http://www.google.co.jp')
print(browser.title)

browser.quit()
display.stop()

Ich glaube nicht, dass es viel Verwirrung mit dem obigen Code gibt. Die Zeilen 1 und 2 nennen die virtuelle Anzeige und Selen.

Die 4. Zeile definiert die virtuelle Anzeige und die 5. Zeile startet sie. Starten Sie Chrome auf dem virtuellen Display mit webdriver.Chrome () in Zeile 6. Holen Sie sich die Quelldaten von google.co.jp in die 7. Zeile Gibt das Titel-Tag-Element der in der 8. Zeile erfassten Seite aus.

Jetzt haben Sie eine Umgebung, in der Sie Chrome nur mit CLI starten können.

Wie kratzt man eigentlich?

Beim eigentlichen Scraping verwende ich PhantomJS anstelle von Chrome. Da PhantomJS ein Headless-Browser ist, ist keine virtuelle Anzeige erforderlich, und es ist nützlich, da es auch in Javascript geschriebenen Code abkratzt. Wenn Sie mit PhantomJS arbeiten möchten, überprüfen Sie bitte hier.

Im Fall von Chrome möchten Sie möglicherweise Chrome verwenden, da Sie testen können, wie sich der Browser tatsächlich verhält. Wenn Sie mit Chrome kratzen möchten, rufen Sie die Seite hier auf.

browser = webdriver.PhantomJS(executable_path='')

Teil von

browser= webdriver.Chrome() 

Wenn Sie es durch ersetzen, wird es funktionieren ^^ (Wiederholen Sie dies, bitte beachten Sie, dass Javascript-Code nicht abgekratzt werden kann.)

Recommended Posts