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.
Betriebssystem: Ubuntu 16.04 (Sakura VPS)
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
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
Es entsprach dem folgenden Befehl.
sudo apt-get update
sudo apt-get -f install
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
Installieren Sie eine virtuelle Anzeige und führen Sie Chrome auf der virtuellen Anzeige aus.
ist.
Der spezifische Arbeitsablauf ist in Schritt 3 beschrieben.
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
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
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.
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.)