Ein Hinweis beim Versuch, mit einer Website über PhantomJS in Lambda zu interagieren. Dieser Artikel kratzt nicht, stellt jedoch die Seite vor, die mit phantomJS angezeigt werden soll. Wenn ich so weit gehen kann, denke ich, dass ich den Rest erledigen kann.
Wenn Sie die Datei in S3 ablegen, wird die Lambda-Funktion ausgeführt. Als Inhalt wird phantomJS der Python2.7-Selenbibliothek verwendet, um das HTML der google.com-Site auszugeben.
Wenn Sie dies bisher tun können, wird es meiner Meinung nach möglich sein, Informationen von Ihren Lieblingsseiten zu extrahieren.
Lassen Sie uns jeden einzelnen überprüfen.
version | |
---|---|
python | 2.7 |
Beachten Sie die Syntax, da AWS Lambda 2.7 unterstützt. Referenz) https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/current-supported-versions.html
Wir werden die verschiedenen erforderlichen Bibliotheken unten überprüfen.
selenium https://pypi.python.org/pypi/selenium Von dieser Site installieren.
Bitte laden Sie den Teerball unten im obigen Abschnitt herunter. Ab diesem Ordner wird danach der gesamte Selen-Ordner unter dem py-Verzeichnis verwendet.
PhantomJS http://phantomjs.org/download.html Bitte laden Sie die Zip-Datei mit der ausführbaren Datei von phantomjs von Linux 64-Bit auf dieser Site herunter. Ich werde danach Phantomjs unter bin verwenden.
Herunterladen verschiedener Bibliotheken und ausführbarer Dateien außer den oben genannten https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html Sie können dies auch verfolgen. Oder besser gesagt, ich habe die Tatsache übersehen, dass es so etwas gab. ..
Erstellen Sie die obige Struktur in einem bestimmten Verzeichnis.
Die Substanz des Prozesses wird in lambda_function.py
beschrieben. Dieser Dateiname kann beliebig sein. Beachten Sie jedoch, dass Sie ihn bei der Registrierung in der AWS Administration Console verwenden.
lambda_function.py
python
#!/usr/bin/env python
import time # for sleep
import os # for path
import selenium
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
def lambda_handler(event, context):
# set user agent
user_agent = ("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36")
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = user_agent
dcap["phantomjs.page.settings.javascriptEnabled"] = True
browser = webdriver.PhantomJS(service_log_path=os.path.devnull, executable_path="/var/task/phantomjs", service_args=['--ignore-ssl-errors=true'], desired_capabilities=dcap)
browser.get('http://google.com')
html = browser.execute_script("return document.getElementsByTagName('html')[0].innerHTML")
print html
Lesen Sie zuerst verschiedene Dinge. UserAgent kann in PhantomJS angegeben werden. Beschreiben Sie es daher ebenfalls.
setup.cfg.py
[install]
prefix=
Diese Datei wird als Setup-Konfigurationsdatei bezeichnet https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html
Lassen Sie es uns wie hier beschrieben einfügen.
Dateien müssen komprimiert sein, damit sie hochgeladen werden können Wechseln Sie in das Verzeichnis mit der obigen Dateistruktur.
$ zip -r upload.zip *
Geben Sie den obigen Befehl ein. Dann wird in dieser Hierarchie upload.zip
generiert.
Python 2.7 mit ausgewählter Laufzeit Wählen Sie s3-get-object-python als Blaupause.
Obwohl es sich um verschiedene Elemente handelt, werden hier der Bucket und das Verzeichnis von S3 als Auslöser für die Ausführung der Lambda-Funktion festgelegt. Mit den obigen Einstellungen
test.com/test/
Es wird mit dem Trigger ausgeführt, wenn die Datei abgelegt wird. Es ist wichtig, aber stellen Sie sicher, dass Sie den Auslöser aktivieren aktivieren.
Klicken Sie unten auf Weiter, um zum nächsten Bildschirm zu gelangen.
Configure function Lambda function code Name und Beschreibung sind die Namen, die auf dem Verwaltungsbildschirm überprüft werden. Wenn Sie es richtig anlegen, werden Sie nicht verstehen können, um welche Art von Verarbeitung es sich handelt. Lassen Sie uns also einen Punkt machen.
Ich denke, Runtime ist Python 2.7 ausgewählt.
Lambda function code Conde-Eintragstyp ist
Es gibt drei Arten. Da wir Zip zuvor erstellt haben, wählen Sie in der Mitte die Option Upload einer ZIP-Datei. .. Laden Sie im Funktionspaket die zuvor erstellte Datei "upload.zip" hoch.
Lambda function handler and role
Die Eingabe dieses Handlers ist äußerst wichtig. Bitte beachten Sie, dass dieses Eingabeelement der Name der Hauptdatei ist. Funktionsname. Vorhin
Dateiname: lambda_function
Funktionsname: lambda_handler
Da es in erstellt wurde, geben Sie lambda_function.lambda_handler
in Handler ein.
Wählen Sie dann Rolle. Wenn es nicht vorhanden ist, erstellen Sie eine neue und wählen Sie eine vorhandene Rolle aus der vorhandenen Rolle aus, falls sie bereits vorhanden ist.
Advanced settings Hier können Sie die Speicher- (MB) und Timeout-Zeiten auswählen. Der Speicher reicht von 128 KB bis 1536 KB Es scheint, dass sich die Leistung der CPU je nach Speicher verbessert. (http://qiita.com/hama_du/items/12303d9f9cb800db14d3)
Ich werde es als Referenz setzen. (source: https://aws.amazon.com/jp/lambda/pricing/)
Die Timeout-Zeit kann bis zu 5 Minuten gewählt werden.
Lassen Sie uns abschließend auswählen, ob in VPC ausgeführt werden soll.
Sobald Sie die Lambda-Funktion registriert haben
Klicken Sie auf die Schaltfläche Test und klicken Sie auf Speichern und testen.
Wenn die Funktion ausgeführt wird, können Sie bestätigen, dass der Inhalt von "print html" in der obigen Form ausgegeben werden kann. Wenn Sie auf das obige Bild klicken, können Sie bestätigen, dass die Funktion vorerst ausgeführt wird, da Google HTML tatsächlich gedruckt wird. Selbst wenn Sie die Datei in S3 ablegen, wird die Funktion tatsächlich ausgeführt.
das ist alles.
Ich schreibe nicht sehr oft lange Artikel und ich denke, dass es einige Fehler gibt, also denke ich, dass ich sie nach und nach hinzufügen / korrigieren werde.
Bearbeiten 1) Bearbeitet, weil es eine Diskrepanz zwischen dem Titel und dem Inhalt gab (7/11)
Recommended Posts