초보자가 파이썬으로 웹 스크래핑 (4) - 2 CloudShell에서 스크래핑 실행
9968 단어 gcpPython3CloudShellGit
파이썬에서 웹 스크래핑 학습 로드맵
(1) 로컬에서 우선 목적의 부츠의 스크래핑에 성공한다.
(2) 로컬에서 스크래핑한 결과를 Google 스프레드시트에 연계한다.
(3) 로컬에서 cron 자동 실행을 수행합니다.
(4) 클라우드 서버에서 무료 자동 실행에 도전한다. (Google Compute Engine)
(4)-1 클라우드에 테스트용 PGM을 올려 CloudShell상에서 정상 가동시킨다
(4)-2 스크래핑 PGM을 리포지토리에 추가해, CloudShell상에서 정상 가동시킨다. ←지금 코코
(4)-3 ComputeEngine의 VM 인스턴스를 작성해, 스크래핑을 자동 실행시킨다.
(5)클라우드상에서, 서버리스에서의 무료 자동 실행에 도전한다. (아마 Cloud Functions + Cloud Scheduler)
이번 절차
[1] 로컬 리포지토리에 스크래핑 PGM 추가
[2]Cloud Source Repositories 마스터에게 push
[3] 마스터에서 CloudShell의 복제본으로 pull
[4] requirements.txt를 사용하여 필요한 모듈의 대량 설치
[5] CloudShell에서 스크래핑 수행
[1] 로컬 리포지토리에 스크래핑 PGM 추가
로컬 리포지토리에 파일을 추가합니다.
Mac의 zsh11: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
커밋이 필요한 파일이 있는지 확인하고 add, commit을 수행합니다.
Mac의 zsh11: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
[2]Cloud Source Repositries의 마스터에게 push
master에 pusu를합니다.
Mac의 zsh11: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] %
[3] 마스터에서 CloudShell의 복제본으로 pull
CloudShell에서 마지막으로 복제한 리포지토리에 pull합니다.
cloudshellcloudshell:09/26/20 02:54:33 ~/gce-cron-test $ git pull origin master
CloudShell 리포지토리에 추가되었는지 확인합니다. (나중에 새는 requirements.txt를 추가하고 있습니다.)
cloudshellcloudshell: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
[4] requirements.txt를 사용하여 필요한 모듈의 대량 설치
requirements.txt를 사용하여 필요한 모듈을 대량으로 설치합니다.
cloudshellcloudshell:09/26/20 02:55:10 ~/gce-cron-test $ pip install -r requirements.txt
pip의 list를 확인합니다.
Mac 로컬에서 "pip freeze > requirements.txt"로 통째로 필요한 모듈을 requirements.txt에 넣고 있기 때문에, 당연히 제대로 갖추어져 있습니다.
cloudshellcloudshell: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.
[5] 스크래핑 실행
스크래핑 PGM "requests-test2.py"를 실행해보십시오.
cloudshellcloudshell: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'
실수로 그런 파일이 없습니다. Mac 로컬의 풀 패스 지정이 남았기 때문에 당연합니다.
로컬은 VScode이지만 CloudShell의 코드 편집기에서 수정합니다.
cloudshellcloudshell: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
"cloudshell open"명령으로 코드 편집기가 시작되므로 json 경로를 수정합니다.
재실행입니다.
cloudshellcloudshell: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 スクレイピングを終了しました。
cloudshell:09/26/20 03:01:18 ~/gce-cron-test $
무사히 스크래핑 할 수있었습니다.
덧붙여 소스의 전용은 이쪽. 초보자가 파이썬으로 웹 스크래핑 (2)
GCP의 시간은 기본적으로 UTC이므로 도쿄 시간 -9 시간입니다.
다음 번에는 Google Compute Engine에 VM을 만들고 스크래핑 동작을 확인하고 cron에서 자동 실행에 도전합니다.
Reference
이 문제에 관하여(초보자가 파이썬으로 웹 스크래핑 (4) - 2 CloudShell에서 스크래핑 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/inoken0926/items/ee24aa57ca3553dcb5e9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[1] 로컬 리포지토리에 스크래핑 PGM 추가
[2]Cloud Source Repositories 마스터에게 push
[3] 마스터에서 CloudShell의 복제본으로 pull
[4] requirements.txt를 사용하여 필요한 모듈의 대량 설치
[5] CloudShell에서 스크래핑 수행
[1] 로컬 리포지토리에 스크래핑 PGM 추가
로컬 리포지토리에 파일을 추가합니다.
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
커밋이 필요한 파일이 있는지 확인하고 add, commit을 수행합니다.
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
[2]Cloud Source Repositries의 마스터에게 push
master에 pusu를합니다.
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] %
[3] 마스터에서 CloudShell의 복제본으로 pull
CloudShell에서 마지막으로 복제한 리포지토리에 pull합니다.
cloudshell
cloudshell:09/26/20 02:54:33 ~/gce-cron-test $ git pull origin master
CloudShell 리포지토리에 추가되었는지 확인합니다. (나중에 새는 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
[4] requirements.txt를 사용하여 필요한 모듈의 대량 설치
requirements.txt를 사용하여 필요한 모듈을 대량으로 설치합니다.
cloudshell
cloudshell:09/26/20 02:55:10 ~/gce-cron-test $ pip install -r requirements.txt
pip의 list를 확인합니다.
Mac 로컬에서 "pip freeze > requirements.txt"로 통째로 필요한 모듈을 requirements.txt에 넣고 있기 때문에, 당연히 제대로 갖추어져 있습니다.
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.
[5] 스크래핑 실행
스크래핑 PGM "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'
실수로 그런 파일이 없습니다. Mac 로컬의 풀 패스 지정이 남았기 때문에 당연합니다.
로컬은 VScode이지만 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
"cloudshell open"명령으로 코드 편집기가 시작되므로 json 경로를 수정합니다.
재실행입니다.
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 スクレイピングを終了しました。
cloudshell:09/26/20 03:01:18 ~/gce-cron-test $
무사히 스크래핑 할 수있었습니다.
덧붙여 소스의 전용은 이쪽. 초보자가 파이썬으로 웹 스크래핑 (2)
GCP의 시간은 기본적으로 UTC이므로 도쿄 시간 -9 시간입니다.
다음 번에는 Google Compute Engine에 VM을 만들고 스크래핑 동작을 확인하고 cron에서 자동 실행에 도전합니다.
Reference
이 문제에 관하여(초보자가 파이썬으로 웹 스크래핑 (4) - 2 CloudShell에서 스크래핑 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/inoken0926/items/ee24aa57ca3553dcb5e9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)