awsでスクレイピングを行ってslackで投稿させるまでの道のり

やりたいこと

AWS上でpythonを走らせて、スクレイピングを実行 取得したデータを日時でSlackに投稿する

スクリプトを書く

書き方とかはぐぐれば出てくるので略 はじめは当たり前だけどローカルで動かして動作確認して、 githubにpushしておく Amazon Linux2でSelenium環境を最短で構築する - Qiita

AWSインスタンスを立てる

無料枠で十分なので、セキュリティだけ気をつけてインスタンスを立てる AmazonLinux2を利用

git と python3をいれる

sudo yum install git
sudo yum install python3

最新版のpython3はpipも同時にinstallされるので今後はpip3を使う。 標準だとpython2が使われちゃうからpip使わないように注意

スクレイピングに必要なインストールを実行

qiita.com

の通りに各種必要ファイルをインストールしていきましょう。

ただしpip installのところは、上記で書いたとおりpip3で実行すること。 またslack投稿を行いたいのであれば 

sudo pip3 install slackweb

githubからclone

とくに書くこと無いけどcloneして実行できることを確認する。

cron設定を実施

awsのcron動作でハマる。 単にcrontab -e とかで書いても動作しないので解消に努めている。

https://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/workingcookbook-extend-cron.html

Python Pandas (CSV操作)

唐突にCSV操作にはPandasを利用しますと出てきたのでメモ

Python Data Analysis Library — pandas: Python Data Analysis Library

pip install pandas

pandas - Wikipedia

pandasは、プログラミング言語Pythonにおいて、データ解析を支援する機能を提供するライブラリである。特に、数表および時系列データを操作するためのデータ構造と演算を提供する[2]。PandasはBSDライセンスのもとで提供されている[3]。

cocodrips.hateblo.jp

shinyorke.hatenablog.com

jupyter Notebook

udemy講座の中で当たり前のように出てきたので調査

https://qiita.com/horankey_jet_city/items/f29c3477a5099f12cb18

 

Jupyter Notebook とは

Jupyter Notebook (ジュピター・ノートブック) とは、プログラムを実行し、実行結果を記録できるツールです。主に、数値計算・データ解析を行うときに使われるツールですが当然、普通のプログラムにも使えます。

python環境構築2 virtualenv

どうやらpyenvだけだと、 パイソンバージョンだけ使い分けるだけのようで、 仮想環境を作る場合には別のツールが必要らしい。 パッケージ管理としてのvirtualenvがあるようなのでそちらを利用する。

pyenvでのPython仮想環境の作り方まとめ - Qiita

zshにしているのでそこは注意

python環境構築1 pyenv

とりあえず業務都合でpythonに手を出すことになりそうなため環境構築

  参考 Pythonの開発環境を用意しよう!(Mac) | プログラミングの入門なら基礎から学べるProgate[プロゲート]

ただシェルをbashからzshに変えているのでそこの対応は上記のままではいかない。 そのため以下のコマンドに変更

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc

参考 pyenvを使ってMacにPythonの環境を構築する - Qiita

コマンド詳細

echo 'export ***** ' >> ●● は●●へファイルを書き込むというイディオム的に覚えたほうが早そう。 コマンド一つ一つは下記で確認

【 echo 】コマンド――メッセージや環境変数を表示する:Linux基本コマンドTips(113) - @IT

【 export 】コマンド――環境変数やシェル変数を設定する:Linux基本コマンドTips(174) - @IT

ファイルシステムの基礎と基本的なコマンドの使い方 (4/4):超入門コマンドプロンプト - @IT

 

rubyの命名規則

命名規則大事なんだけど、漏れやすいところでもあるし、

どうしても他の言語やら仕事をしていると忘れてしまうので・・・。

 

https://qiita.com/TakeshiFukushima/items/647a652439b55525945f

 

とりあえずよく使うこととしては

 

クラス名はキャメルケース(CamelCase)

メソッド名、変数名はスネークケース(snake_case)

定数名はスクリーミングスネークケース(SCREAMING_SNAKE_CASE)

 

rubyにおけるコロンの使い方

引き続き復習中

コロンに関連する機能あたりがハマる要素あったのでメモ

うかつにコロン=シンボルとだけ考えていると問題

 

# コロンの前後設置による意味の変更

 

## 基本の使われ方

https://qiita.com/Ussan/items/e7f2456f934fcc8b4939

ここらへんがコメントを含めて参考になった。

 

地味にハマったのが後置コロン

呼び出し時と定義時ではそれぞれ機能が異なる。

 

## 呼び出し時の後置コロン

後置コロンは基本的にハッシュパラメータの省略に使われることが多い。

https://qiita.com/iron-breaker/items/32710004f0bb2e2babb6

```

do_something(name: "太郎")

```

 

## 定義時の後置コロン

定義時の後置コロンは意味合いが異なり「キーワード引数」となる。

```

def do_something(name: , price:)

  puts name

end

```

https://chaika.hatenablog.com/entry/2019/05/14/123000