Actuellement sur un PC local ① Scraping vers un site Web en utilisant Selenium en Python (2) Accumuler les résultats de grattage dans un fichier journal ③ Exécution régulière avec CRON faites
Je souhaite créer cela dans l'environnement GCP qu'est le cloud Probablement L'environnement d'exécution Python est ** Google Cloud Functions (GCF) ** ** Google Cloud Storage ** ou ** Google Drive ** pour stocker les fichiers journaux L'exécution planifiée est ** planificateur Google Cloud ** Doit être remplacé par ceux-ci!
Trois. ① ** Je voulais utiliser GCP. ** AWS allait bien, mais d'une manière ou d'une autre. ② Je vais étudier à l'étranger, donc je ne voulais pas laisser mon ordinateur allumé. ** La ville dans laquelle je vis est chaud en été ~~ merde ~~, alors j'ai pensé que ce serait un lourd fardeau de faire fonctionner le PC. Je m'inquiète des coupures de courant car il y a de nombreux orages. Après cela, si vous passez au cloud, il semble facile de gérer et de maintenir où que vous soyez, sushi. ③ ** J'étais inquiet pour la facture d'électricité. ** J'utilise [la facture d'électricité de l'iMac est d'environ 60 yens par jour](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% FE% BC% 9F /) (probable). C'est 1800 yens par mois. D'autre part, GCF a un niveau gratuit. Le grattage est effectué toutes les 5 minutes. Convient probablement confortablement. En d'autres termes, c'est gratuit.
Les trois tâches principales suivantes sont requises ① Migration du programme GCF ② Paramètres d'exécution programmée ③ Stockage des journaux Donc, cette fois, jusqu'à "Programmer la migration du GCF"
Parmi les nombreux services Google Cloud, autres que Cloud Functions cette fois ・ Lancez un PC dans un environnement cloud avec Compute Engine -Exécuter avec Cloud Run Il a été étudié La raison de l'adoption de Cloud Functions est Compute Engine coûte de l'argent pour lancer une instance en permanence et l'exécuter une fois toutes les 5 minutes, Cloud Run est-il suffisant pour créer un conteneur? J'ai pensé que c'était différent parce que j'ai compris que le but de Cloud Run est d'exécuter temporairement une application plus complète en premier lieu. Si vous vous méprenez, dites-moi une personne érotique
Il y a tellement d'articles que ça pourrit, alors google!
Ce site m'a été utile. ** Merci beaucoup ** Tout d'abord, démarrez Cloud Shell à partir du bouton le plus à gauche dans le groupe de boutons en haut à droite de l'écran. Exécutez la commande suivante lorsqu'elle peut être démarrée.
#Clone de God Git qui met en place des outils utiles tels que webdriver
git clone https://github.com/ryfeus/gcf-packs.git
#Bouge toi
cd gcf-packs/selenium_chrome/source
#Dégivrer
unzip headless-chromium.zip
#Déployer pour le moment(Un programme qui accède au Wiki de manière aléatoire et récupère le titre de la page)
gcloud functions deploy handler --runtime python37 --trigger-http --region asia-northeast1 --memory 512MB
Cliquez ici pour les options de déploiement En chemin
Allow unauthenticated invocations of new function [handler]? (y/N)?
S'affiche, entrez "y". Si vous connaissez le déclencheur http, c'est-à-dire l'URL émise après le déploiement, même un inconnu peut l'exécuter, mais surtout parce qu'il n'y a aucun avantage (dans le cas de mon programme) à cette personne lorsqu'il est exécuté par une autre personne Il ne devrait y avoir aucun problème (bien que si la personne l'exécute de manière malveillante 100 millions de fois, les frais d'utilisation seront élevés et je mourrai).
Ensuite, il sera affiché à l'écran avec le gestionnaire de nom comme celui-ci. Revenir à 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:
Copiez la partie https ~ de
curl https://asia-northeast1-************.cloudfunctions.net/handler
Retournera le titre d'une page de WIki. De plus, à l'exception de la console, vous pouvez faire la même chose en cliquant sur «gestionnaire» à l'écran, en cliquant sur «tester» à la destination de la transition et «tester la fonction». Le code d'origine est "main.py" dans le même répertoire. De plus, si vous utilisez un outil autre que chromedriver ou headless-chrome, vous devrez l'apporter vous-même (celui qui peut être géré en important avec python devrait convenir).
Tout ce que vous avez à faire est de réécrire le contenu de "main.py" avec le code que vous avez utilisé localement. Lors de l'écriture de code, il est pratique d'utiliser «Open Editor» sur l'écran où Cloud Shell est lancé.
gcloud functions deploy *** --runtime python37 --trigger-http --region asia-northeast1 --memory 512MB
Faire. Notez que *** après le déploiement entraînera une erreur s'il ne correspond pas au nom de la fonction dans main.py. Testez-le et s'il n'y a pas de problème, c'est fait! !! Je vous remercie pour votre travail acharné.
chrome consomme de la mémoire de manière inattendue. Cliquez sur le nom de la fonction déployée pour passer à l'écran des détails. Vous pouvez vérifier l'utilisation de la mémoire à partir du menu déroulant "Général". Si le comportement est étrange, modifiez la taille de la mémoire.
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')
Ne les effacez pas. Ça ne marche pas. Cependant, même si vous regardez le webdriver officiel, il ne mentionne pas quel argument a quelle signification, donc si vous connaissez la page appropriée, faites-le moi savoir.
J'obtiens une erreur comme l'image pendant le test, mais c'est un mystère que le journal soit correctement exécuté jusqu'à la fin et en sortie. Hmmm. .. ..
Je comprends la raison de l'erreur ci-dessus! !! Ouvrez un nouvel onglet pour ouvrir un lien lors du scraping
key_down(Keys.CONTROL).click().key_up(Keys.CONTROL)
Que faire a été défini sur Keys. ** COMMAND ** car l'environnement local était Mac. GCF est l'environnement d'exécution de Python est Ubuntu.
La prochaine fois, ~~ Jonouchi mourra, Duel Standby! ~~ C'est un paramètre pour une exécution planifiée, alors attendez-le avec impatience!