Remarque lorsque vous essayez d'interagir avec un site Web à l'aide de PhantomJS dans Lambda. Cet article ne gratte pas, mais il présente la page à afficher avec phantomJS. Si je peux aller aussi loin, je pense que je peux faire le reste.
Lorsque vous placez le fichier dans S3, la fonction lambda est exécutée. En tant que contenu, phantomJS de la bibliothèque de sélénium python2.7 est utilisé pour générer le html du site google.com.
Si vous pouvez le faire jusqu'à présent, je pense qu'il sera possible d'extraire des informations de vos sites préférés.
Vérifions chacun d'eux.
version | |
---|---|
python | 2.7 |
Tenez compte de la syntaxe, car AWS lambda prend en charge 2.7. Référence) https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/current-supported-versions.html
Nous vérifierons les différentes bibliothèques requises ci-dessous.
selenium https://pypi.python.org/pypi/selenium Installez à partir de ce site.
Veuillez télécharger la balle tar au bas de la section ci-dessus. À partir de ce dossier, tout le dossier sélénium sous le répertoire py sera utilisé par la suite.
PhantomJS http://phantomjs.org/download.html Veuillez télécharger le zip contenant le fichier exécutable phantomjs depuis Linux 64 bits sur ce site. J'utiliserai phantomjs sous bin après cela.
Autre que ce qui précède, comment télécharger diverses bibliothèques et fichiers exécutables https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html Vous pouvez également suivre ceci. Ou plutôt, j'ai négligé le fait qu'il y avait une telle chose. ..
Créez la structure ci-dessus dans un certain répertoire. La substance du processus sera décrite dans «lambda_function.py». Ce nom de fichier peut être n'importe quoi, mais gardez à l'esprit que vous l'utiliserez lors de votre enregistrement dans AWS Administration Console.
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
Tout d'abord, lisez diverses choses. UserAgent peut être spécifié dans PhantomJS, assurez-vous donc de le décrire également.
setup.cfg.py
[install]
prefix=
Ce fichier s'appelle le fichier de configuration d'installation https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html
Mettons-le comme décrit ici.
Les fichiers doivent être compressés pour pouvoir être téléchargés Allez dans le répertoire avec la structure de fichiers ci-dessus et
$ zip -r upload.zip *
Tapez la commande ci-dessus. Ensuite, ʻupload.zip` est généré dans cette hiérarchie.
python 2.7, avec runtime sélectionné Sélectionnez s3-get-object-python comme Blueprint.
Bien qu'il s'agisse d'éléments divers, le compartiment et le répertoire de S3 qui seront le déclencheur pour exécuter la fonction lambda sont décidés ici. Avec les paramètres ci-dessus
test.com/test/
Il sera exécuté avec le déclencheur lorsque le fichier sera placé. C'est important, mais assurez-vous de cocher Activer le déclencheur.
Cliquez sur Suivant en bas pour passer à l'écran suivant.
Configure function Lambda function code Le nom et la description sont les noms lors de la vérification à partir de l'écran de gestion. Si vous le mettez correctement, vous ne pourrez pas comprendre de quel type de traitement il s'agissait, alors faisons un point.
Je pense que Runtime est Python 2.7 sélectionné.
Lambda function code Le type d'entrée du câble est
Il existe trois types. Puisque nous avons créé Zip plus tôt, sélectionnez Télécharger un fichier .ZIP au milieu. .. Dans le package Function, téléchargeons le ʻupload.zip` créé précédemment.
Lambda function handler and role
L'entrée de ce gestionnaire est extrêmement importante. Veuillez noter que cet élément d'entrée est le nom du fichier principal.Nom de la fonction. Plus tôt
Nom de fichier: lambda_function
Nom de la fonction: lambda_handler
Puisqu'il a été créé dans, entrez lambda_function.lambda_handler
dans Handler.
Sélectionnez ensuite Rôle. S'il n'existe pas, créez-en un nouveau, et s'il existe déjà, sélectionnez un rôle existant dans le rôle existant.
Advanced settings Ici, vous pouvez choisir la mémoire (Mo) et les temps d'expiration. La mémoire varie de 128 Ko à 1536 Ko Il semble que les performances du CPU s'améliorent en fonction de la mémoire. (http://qiita.com/hama_du/items/12303d9f9cb800db14d3)
Je vais le mettre pour référence. (source: https://aws.amazon.com/jp/lambda/pricing/)
Le délai d'expiration peut être sélectionné jusqu'à 5 minutes.
Enfin, choisissons d'exécuter ou non dans VPC.
Une fois que vous avez enregistré la fonction lambda
Cliquez sur le bouton Test et appuyez sur Enregistrer et tester.
Lorsque la fonction est exécutée, vous pouvez confirmer que le contenu de print html
peut être sorti sous la forme ci-dessus.
Si vous appuyez sur cliquez sur l'image ci-dessus, vous pouvez confirmer que la fonction est en cours d'exécution pour le moment car le html google est réellement imprimé. Même si vous placez le fichier dans S3, la fonction est réellement exécutée.
c'est tout.
Je n'écris pas souvent de longs articles et je pense qu'il y a des erreurs, donc je pense que je vais les ajouter / corriger petit à petit.
Edit 1) Modifié car il y avait un écart entre le titre et le contenu (7/11)
Recommended Posts