Maintenant, précédent j'ajouterai la PGM de scraping au référentiel Cloud Source Repositroies créé.
(1) Réussir à gratter le contenu cible localement pour le moment. (2) Liez les résultats de la récupération locale à une feuille de calcul Google. (3) cron est automatiquement exécuté localement. (4) Défiez l'exécution automatique gratuite sur le serveur cloud. (Google Compute Engine) (4) -1 Placez la PGM de test sur le cloud et exécutez-la normalement sur CloudShell. (4) -2 Ajoutez la PGM de scraping au référentiel et exécutez-la normalement sur CloudShell. ← Maintenant ici </ font> (4) -3 Créez une instance de VM de ComputeEngine et exécutez le scraping automatiquement. (5) Défiez l'exécution automatique gratuite sans serveur sur le cloud. (Peut-être Cloud Functions + Cloud Scheduler)
[1] Ajout de la PGM de scraping au référentiel local [2] Push to master Cloud Source Repositories [3] Passer du maître au clonage sur CloudShell [4] Installation en masse des modules requis à l'aide de requirements.txt [5] Effectuer un scraping sur CloudShell
Ajoutez le fichier à votre référentiel local.
Mac zsh
11:28:14 [~] % cd gce-cron-test
11:28:25 [~/gce-cron-test] % ls -la
total 40
drwxr-xr-x 7 hoge staff 224 9 26 11:27 .
drwxr-xr-x+ 45 hoge staff 1440 9 23 16:45 ..
-rw-r--r--@ 1 hoge staff 6148 9 26 11:26 .DS_Store
drwxr-xr-x 13 hoge staff 416 9 23 16:49 .git
-rw-r--r-- 1 hoge staff 146 9 21 15:29 cron-test.py
-rw-r--r--@ 1 hoge staff 2352 9 16 17:54 my-web-hoge-app-hogehoge.json
-rw-r--r-- 1 hoge staff 2763 9 17 13:22 requests-test2.py
Assurez-vous que des fichiers doivent être validés, puis ajoutez et validez.
Mac zsh
11:28:28 [~/gce-cron-test] % git status
On branch master
Your branch is up to date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
.DS_Store
my-web-hoge-app-hogehoge.json
requests-test2.py
nothing added to commit but untracked files present (use "git add" to track)
11:28:34 [~/gce-cron-test] %
11:28:52 [~/gce-cron-test] %
11:28:53 [~/gce-cron-test] % git add .
11:28:58 [~/gce-cron-test] %
11:29:38 [~/gce-cron-test] %
11:29:38 [~/gce-cron-test] % git commit -m "Add requests-test to Cloud Source Repositories"
[master 44abc4d] Add requests-test to Cloud Source Repositories
3 files changed, 73 insertions(+)
create mode 100644 .DS_Store
create mode 100644 my-web-hoge-app-hogehoge.json
create mode 100644 requests-test2.py
Faites un effort pour maîtriser.
Mac zsh
11:30:13 [~/gce-cron-test] %
11:30:23 [~/gce-cron-test] %
11:30:23 [~/gce-cron-test] % git push origin master
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 4 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 3.48 KiB | 891.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To https://source.developers.google.com/p/my-gce-app/r/gce-cron-test
938ea70..44abc4d master -> master
11:31:37 [~/gce-cron-test] %
Accédez au référentiel précédemment cloné dans Cloud Shell.
cloudshell
cloudshell:09/26/20 02:54:33 ~/gce-cron-test $ git pull origin master
Confirmez qu'il a été ajouté au référentiel CloudShell. (Plus tard, j'ai ajouté le fichier requirements.txt.)
cloudshell
cloudshell:09/26/20 02:55:06 ~/gce-cron-test $
cloudshell:09/26/20 02:55:06 ~/gce-cron-test $ ls -la
total 40
drwxr-xr-x 3 hoge hoge 4096 Sep 26 02:52 .
drwxr-xr-x 13 hoge rvm 4096 Sep 23 11:18 ..
-rw-r--r-- 1 hoge hoge 80 Sep 23 11:09 cron.log
-rw-r--r-- 1 hoge hoge 146 Sep 23 09:03 cron-test.py
-rw-r--r-- 1 hoge hoge 6148 Sep 26 02:47 .DS_Store
drwxr-xr-x 8 hoge hoge 4096 Sep 26 02:52 .git
-rw-r--r-- 1 hoge hoge 2352 Sep 26 02:47 my-web-scraping-app-hogehoge.json
-rw-r--r-- 1 hoge hoge 2763 Sep 26 02:47 requests-test2.py
-rw-r--r-- 1 hoge hoge 334 Sep 26 02:52 requirements.txt
Installez les modules requis en bloc à l'aide de requirements.txt.
cloudshell
cloudshell:09/26/20 02:55:10 ~/gce-cron-test $ pip install -r requirements.txt
Consultez la liste des pips. J'ai mis tous les modules nécessaires dans requirements.txt avec "pip freeze> requirements.txt" localement sur Mac, donc bien sûr je les ai correctement.
cloudshell
cloudshell:09/26/20 02:55:41 ~/gce-cron-test $ pip list
Package Version
-------------------- ---------
appdirs 1.4.4
beautifulsoup4 4.9.1
cachetools 4.1.1
certifi 2020.6.20
chardet 3.0.4
distlib 0.3.1
filelock 3.0.12
google-auth 1.21.0
google-auth-oauthlib 0.4.1
gspread 3.6.0
httplib2 0.18.1
idna 2.10
oauth2client 4.1.3
oauthlib 3.1.0
pip 20.1.1
pyasn1 0.4.8
pyasn1-modules 0.2.8
requests 2.24.0
requests-oauthlib 1.3.0
rsa 4.6
setuptools 47.1.0
six 1.15.0
soupsieve 2.0.1
urllib3 1.25.10
virtualenv 20.0.31
WARNING: You are using pip version 20.1.1; however, version 20.2.3 is available.
You should consider upgrading via the '/home/hoge/.pyenv/versions/3.8.5/bin/python3.8 -m pip install --upgrade pip' command.
Essayez d'exécuter la PGM de scraping "requests-test2.py".
cloudshell
cloudshell:09/26/20 02:55:49 ~/gce-cron-test $ python requests-test2.py
Traceback (most recent call last):
File "requests-test2.py", line 40, in <module>
sheet = get_gspread_book(secret_key, book_name).worksheet(sheet_name)
File "requests-test2.py", line 20, in get_gspread_book
credentials = ServiceAccountCredentials.from_json_keyfile_name(secret_key, scope)
File "/home/hoge/.pyenv/versions/3.8.5/lib/python3.8/site-packages/oauth2client/service_account.py", line 219, in from_json_keyfile_name
with open(filename, 'r') as file_obj:
FileNotFoundError: [Errno 2] No such file or directory: '/Users/hoge/git-repository/env2/my-web-hoge-app-hogehoge.json'
Par inadvertance, un tel fichier n'existe pas. Sans surprise, le chemin d'accès local complet du Mac était toujours spécifié. Local est VScode, mais cela est corrigé dans l'éditeur de code de CloudShell.
cloudshell
cloudshell:09/26/20 02:55:55 ~/gce-cron-test $ pwd
/home/hoge/gce-cron-test
cloudshell:09/26/20 02:56:12 ~/gce-cron-test $ cloudshell open requests-test2.py
La commande "cloudshell open" lance l'éditeur de code, modifiez donc le chemin json.
C'est une ré-exécution.
cloudshell
cloudshell:09/26/20 03:00:32 ~/gce-cron-test $
cloudshell:09/26/20 03:00:33 ~/gce-cron-test $ python requests-test2.py
2020/09/26 03:01:15 Le grattage est terminé.
cloudshell:09/26/20 03:01:18 ~/gce-cron-test $
J'ai pu gratter en toute sécurité. Cliquez ici pour la source complète. Web scraping débutant avec Python (2) L'heure sur GCP est UTC par défaut, ce sera donc -9 heures, heure de Tokyo.
La prochaine fois, je vais créer une VM sur Google Compute Engine, vérifier l'opération de scraping et essayer de l'exécuter automatiquement avec cron.
Recommended Posts