Es gab Daten im WEB, deren Werte sich in Echtzeit änderten. Ich habe beschlossen, ein Programm zu erstellen, um den Wert regelmäßig zu überprüfen, aber es war mühsam, den Scraping-Code zu schreiben, da ich mich auf der Seite anmelden musste. Als Gegenmaßnahme entschied ich mich, Selen zu verwenden, um einen Webbrowser zu betreiben und zu kratzen. Ich werde den Prozess als Memorandum zusammenfassen.
Darüber hinaus war es in Ordnung, den vorhandenen PC zu verwenden und den Webbrowser automatisch durch Stapelverarbeitung auszuführen. Es war jedoch ein Hindernis, den Webbrowser auf meinem eigenen PC zu starten, den ich normalerweise verwende. Lassen Sie es uns ohne Erlaubnis auf dem Mietserver (Ubuntu16.04) ausführen.
Genauer gesagt wird es das folgende Bild sein. (1) Starten Sie einen Webbrowser über Python → Teil1 (dieser Beitrag) (2) Betreiben Sie den Webbrowser mit Selen und verarbeiten Sie die WEB-Daten → Erklärt in Teil 2 (3) Speichern Sie die verarbeiteten Daten in mongoDB → Erklärt in Teil3 (4) Führen Sie das py-Programm, das (1) bis (3) mit cron ausführt, automatisch aus → Erklärt in Teil3 (5) Bei einer bestimmten Wertschwankung per E-Mail benachrichtigen → Bonus
Betriebssystem: Ubuntu16.04 (Sakura VPS) python : python3.5
Ursprünglich arbeitete ich mit Google Chrome, aber in gewisser Weise fand ich den kopflosen Browser PhantomJS gut, sodass ich anfing, PhantomJS zu verwenden. Die Gründe für die Wahl von PhantomJS sind folgende.
Ich habe PhantomJS mithilfe der folgenden Schritte installiert.
$ wget -O /tmp/phantomjs-2.1.1-linux-x86_64.tar.bz2 https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
$ cd /tmp
$ bzip2 -dc /tmp/phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar xvf -
$ sudo mv /tmp/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/
$ phantomjs --version
> 2.1.1
Wenn die Versionsprüfung in der letzten Zeile die beabsichtigte Version anzeigt, die Sie installiert haben, sind Sie fertig.
(Referenz-URL) http://bit.ly/2bRGnYI
Verwenden Sie Selen für die Festpunktbeobachtung von Daten im Web. Selen ist eines der Testwerkzeuge für WEB-Anwendungen. Anstatt dass Menschen den Browser steuern, steuert Selenium den Browser.
Selen kann mit Programmcode bedient werden, aber kurz gesagt, mit Selen können Sie den Browser programmgesteuert frei bedienen. Sie können beispielsweise Vorgänge wie "Klicken Sie auf die Schaltfläche" Anmelden "und" Geben Sie Ihre E-Mail-Adresse automatisch in das Textfeld "Benutzer-ID" ein "ausführen. Sie können auch den HTML-Text der aktuell geöffneten Seite abrufen, der zum Scraping verwendet werden kann.
Ich habe mit Selen in Python3 gearbeitet. Führen Sie die folgenden Schritte aus, um Selen zu installieren, einschließlich der Installation von pip3.
sudo apt-get install python3-setuptools
sudo easy_install3 pip
pip3 install selenium
Verwenden Sie Selenium und PhantomJS, um die Seite Google zu starten und den Wert des Google-Titel-Tags abzurufen.
Selentestprogramm
import time
from selenium import webdriver
browser = webdriver.PhantomJS(executable_path='<path/to/phantomjs>')
browser.get("http://www.google.com")
time.sleep(3)
print(browser.title)
browser.close()
Der obige Code ist intuitiv und leicht zu verstehen, und selbst wenn Sie mit Selen noch nicht vertraut sind, werden Sie nicht verwirrt sein. Wenn "Google" ausgegeben wird, läuft das Programm normal.
Das einzige, was Aufmerksamkeit braucht, ist die 4. Zeile. Wenn Sie PhantomJS mit webdriver.PhantomJS () aufrufen, müssen Sie den Pfad von phantomJS im Argument beschreiben. Geben Sie den Pfad im Formular webdriver.PhantomJS (ausführbarer_Pfad = '...') an, wie im obigen Code gezeigt. Wenn Sie den Weg nicht kennen
which phantomjs
Da der zurückgegebene Wert der Pfad ist, geben wir den Speicherort an.
Die 5. Zeile sendet eine GET-Anfrage an die von browser.get (...) angegebene URL. Die erhaltene Antwort wird im Browser gespeichert und der Wert des Titel-Tags von Google kann in browser.title ausgegeben werden.
Nachdem wir bestätigt haben, dass Selen und PhantomJS gestartet sind, möchten wir tatsächlich bestimmte Daten kratzen und extrahieren.
Fahren Sie fort mit Fortsetzung (2).
Recommended Posts