Derzeit auf einem lokalen PC ① Scraping auf eine Website mit Selenium in Python (2) Sammeln Sie Scraping-Ergebnisse in einer Protokolldatei ③ Regelmäßige Ausführung mit CRON tun
Ich möchte dies in der GCP-Umgebung erstellen, die die Cloud ist Wahrscheinlich Die Python-Ausführungsumgebung ist ** Google Cloud Functions (GCF) ** ** Google Cloud Storage ** oder ** Google Drive ** zum Speichern von Protokolldateien Die geplante Ausführung ist ** Google Cloud Scheduler ** Sollte durch diese ersetzt werden!
Drei. ① ** Ich wollte GCP verwenden. ** AWS war in Ordnung, aber irgendwie. ② Ich werde im Ausland studieren, also wollte ich meinen PC nicht eingeschaltet lassen. ** Die Stadt, in der ich lebe, ist im Sommer heiß ~~ shit ~~, also dachte ich, es wäre eine schwere Belastung, den PC zu betreiben. Es gibt viele Gewitter, deshalb mache ich mir Sorgen um Stromausfälle. Wenn Sie danach in die Cloud wechseln, scheint es einfach zu sein, Sushi zu verwalten und zu warten, wo immer Sie sind. ③ ** Ich machte mir Sorgen um die Stromrechnung. ** Ich benutze [iMac Stromrechnung ist ungefähr 60 Yen pro Tag](https://web.waytoearnmoney.org/2015/03/03/imac%E3%82%B9%E3%83%AA%E3 % 83% BC% E3% 83% 97% E6% 99% 82% E3% 81% AE% E5% BE% 85% E6% A9% 9F% E9% 9B% BB% E5% 8A% 9B% E3% 81 % A8% E9% 9B% BB% E6% B0% 97% E4% BB% A3% E3% 81% AF% E3% 81% A9% E3% 82% 8C% E3% 81% 8F% E3% 82% 89 % E3% 81% 84% EF% BC% 9F /) (wahrscheinlich). Es ist 1800 Yen pro Monat. Auf der anderen Seite hat GCF eine kostenlose Stufe. Das Scraping wird alle 5 Minuten durchgeführt. Passt wahrscheinlich bequem. Mit anderen Worten, es ist kostenlos.
Die folgenden drei Hauptaufgaben sind erforderlich ① GCF-Migration programmieren ② Geplante Ausführungseinstellungen ③ Protokollspeicher Also diesmal bis "Programm GCF Migration"
Unter den vielen Google Cloud-Diensten, diesmal außer Cloud-Funktionen ・ Starten Sie einen PC in einer Cloud-Umgebung mit Compute Engine ・ Verwenden Sie Cloud Run, um alles in den Container zu legen und auszuführen. Es wurde untersucht Der Grund für die Einführung von Cloud-Funktionen ist Compute Engine kostet Geld, um eine Instanz zu starten und sie alle 5 Minuten auszuführen. Reicht Cloud Run aus, um einen Container zu erstellen? Ich dachte, dass es anders ist, weil ich verstanden habe, dass der Zweck von Cloud Run darin besteht, zunächst vollständig abgeschlossene Apps auszuführen. Wenn Sie falsch verstehen, sagen Sie mir eine erotische Person
Es gibt so viele Artikel, dass es verrottet, also google!
Diese Seite war hilfreich für mich. ** Vielen Dank ** Starten Sie zunächst Cloud Shell über die Schaltfläche ganz links in der Schaltflächengruppe oben rechts auf dem Bildschirm. Führen Sie den folgenden Befehl aus, wenn er gestartet werden kann.
#Klon von God Git, der nützliche Tools wie Webdriver zusammenstellt
git clone https://github.com/ryfeus/gcf-packs.git
#Bewegung
cd gcf-packs/selenium_chrome/source
#Auftauen
unzip headless-chromium.zip
#Vorerst bereitstellen(Ein Programm, das zufällig auf das Wiki zugreift und den Seitentitel abruft)
gcloud functions deploy handler --runtime python37 --trigger-http --region asia-northeast1 --memory 512MB
Klicken Sie hier, um die Bereitstellungsoptionen anzuzeigen Unterwegs
Allow unauthenticated invocations of new function [handler]? (y/N)?
Wird angezeigt, geben Sie "y" ein. Wenn Sie den Trigger http kennen, dh die nach der Bereitstellung ausgegebene URL, kann sie auch ein Fremder ausführen, insbesondere, weil diese Person (im Fall meines Programms) keinen Vorteil hat, wenn sie von einer anderen Person ausgeführt wird Es sollte kein Problem geben (wenn die Person es jedoch 100 Millionen Mal böswillig ausführt, ist die Nutzungsgebühr hoch und ich werde sterben).
Dann wird es mit dem Namenhandler wie folgt auf dem Bildschirm angezeigt. Gehen Sie zurück zu Cloud Shell
Deploying function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
entryPoint: handler
httpsTrigger:
url: https://asia-northeast1-************.cloudfunctions.net/handler
ingressSettings: ALLOW_ALL
labels:
Kopieren Sie den https ~ -Teil von
curl https://asia-northeast1-************.cloudfunctions.net/handler
Gibt den Titel einer Seite von WIki zurück. Mit Ausnahme der Konsole können Sie dies auch tun, indem Sie auf dem Bildschirm auf "Handler", am Übergangsziel auf "Test" und auf "Testen der Funktion" klicken. Der ursprüngliche Code lautet "main.py" im selben Verzeichnis. Wenn Sie ein anderes Tool als Chromedriver oder Headless-Chrom verwenden, müssen Sie es selbst mitbringen (das, das durch Importieren mit Python verwaltet werden kann, sollte in Ordnung sein).
Sie müssen lediglich den Inhalt von "main.py" in den lokal verwendeten Code umschreiben. Beim Schreiben von Code ist es praktisch, "Editor öffnen" auf dem Bildschirm zu verwenden, auf dem Cloud Shell gestartet wird.
gcloud functions deploy *** --runtime python37 --trigger-http --region asia-northeast1 --memory 512MB
Machen. Beachten Sie, dass *** nach der Bereitstellung zu einem Fehler führt, wenn er nicht mit dem Funktionsnamen in main.py übereinstimmt. Testen Sie es und wenn es kein Problem gibt, ist es geschafft! !! Danke für deine harte Arbeit.
Chrom frisst unerwartet Speicher auf. Klicken Sie auf den Namen der bereitgestellten Funktion, um zum Detailbildschirm zu gelangen. Sie können die Speichernutzung im Pulldown-Menü "Allgemein" überprüfen. Wenn das Verhalten seltsam ist, ändern Sie die Speichergröße.
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--window-size=1280x1696')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--hide-scrollbars')
chrome_options.add_argument('--enable-logging')
chrome_options.add_argument('--log-level=0')
chrome_options.add_argument('--v=99')
chrome_options.add_argument('--single-process')
chrome_options.add_argument('--ignore-certificate-errors')
Löschen Sie diese nicht. Es funktioniert nicht. Selbst wenn Sie sich den offiziellen Web-Treiber ansehen, wird nicht erwähnt, welches Argument welche Bedeutung hat. Wenn Sie also die entsprechende Seite kennen, lassen Sie es mich bitte wissen.
Ich erhalte während des Tests eine Fehlermeldung wie das Bild, aber es ist ein Rätsel, dass das Protokoll bis zum Ende ordnungsgemäß ausgeführt und ausgegeben wird. Hmmm. .. ..
Ich verstehe den Grund für den obigen Fehler! !! Öffnen Sie eine neue Registerkarte, um beim Scraping einen Link zu öffnen
key_down(Keys.CONTROL).click().key_up(Keys.CONTROL)
Was zu tun ist wurde auf Schlüssel gesetzt. ** BEFEHL **, da die lokale Umgebung Mac war. GCF ist die Ausführungsumgebung von Python ist Ubuntu.
Das nächste Mal wird ~~ Jonouchi sterben, Duel Standby! ~~ Es ist eine Einstellung für die geplante Ausführung, also freuen Sie sich bitte darauf!