0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

スクレイピングをcronで定期的に実行

Posted at

やりたいこと

  • こちらから】無料枠でGCEを起動したい
  • こちらから】SSHの22番ポートを3333番ポートに変更したい
  • こちらから】GCE(仮想マシン) 内の Python(Ubuntu) でSeleniumを使ったスクレイピング
  • こちらから】取得したファイルをGoogle Driveにアップロード
  • 【このページ】スクレイピングを cron で定期的に実行する
  • 【このページ】指定の時間にインスタンスをオン/オフする

全体図

cloud.jpg

1ヵ月周期でスクレイピングをする設定

接続先で cron の設定をするコマンドを入力

hogehoge@vm-hoge:~$
crontab -e

crontab の実行が初めての場合はエディタを選択するように言われる
Select an editor. To change later, run 'select-editor'.

ここでは vim.basic を選択する

次に、毎月 1日の 0:00に qiita.py を実行する設定を追加する
0 0 1 * * python3 /home/hogehoge/scrape/qiita.py

crontab ファイル内
# Edit this file to introduce tasks to be run by cron.
# 
~ 省略
~ 省略
~ 省略
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
0 0 1 * * python3 /home/hogehoge/scrape/qiita.py

保存したらこれで cron の設定おわり。簡単。

typoしてcronの設定消えちゃった...!

とならないように、crontab -r の対策

hogehoge@vm-hoge:~$
vim ~/.bashrc

以下の1行を追加して保存

~/.bashrc
alias crontab="crontab -i"

編集した内容を反映する

hogehoge@vm-hoge:~$
source ~/.bashrc

間違えて crontab -r と入力しても「本当に消すのか?」と確認してくれる

hogehoge@vm-hoge:~$
crontab -r
# crontab: really delete hogehoge's crontab? (y/n)

日付変わったら動くように設定したのに朝の9時に動いた!

とならないように、タイムゾーンの設定を変更

hogehoge@vm-hoge:~$
timedatectl set-timezone Asia/Tokyo
sudo systemctl restart cron

VM インスタンスを自動で起動・停止をする設定

  • VM インスタンスが作成済みであることを想定して話を進めます

もう少しマシンパワーが欲しいとき、無料枠を超えたつよつよマシンで動かすと思うのですが
料金体系が従量課金制なので動かしてない間もお金がかかります。
簡単に言うと、誰も見てないテレビがつけっぱだとお金がかかるので自動でオンオフしよう的な。

インスタンスが止まってしまえば不正アクセス等も出来ないはずなので、無料枠だけの運用しかしない場合も設定する価値はあると思います

① VM インスタンスにタグを追加する

  1. 画面左上、Google Cloud ロゴの左にある ナビゲーション メニュー から すべてのプロダクトを表示
    ナビゲーション メニュー
    すべてのプロダクトを表示
  2. コンピューティングの Compute Engine を選択
    Compute Engine
  3. インスタンス名 をクリック
    インスタンス名
  4. 編集 をクリック
    編集
  5. ラベルの追加 をクリック
    ラベルの追加
  6. キー:env dev と入力
    キーと値
  7. 画面右下のSAVE、画面左下の保存する をクリック

② Cloud Scheduler と Cloud Functions の設定

上記ガイドの Cloud Functions を介して Pub/Sub によってトリガーされる関数をデプロイする から クリーンアップ 手前までを進めていけば設定できます

メモ

  • VM インスタンスを自動で起動・停止をする設定
    これに関して、インスタンス スケジュール という別機能でも同じようなことができるが融通が利かない
    例えば、時間・曜日を変更したいときに1から作り直しが必要
  • cron の設定でファイルのパスを絶対パスにしないとエラーが発生する

参考先

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?