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使わないように注意
スクレイピングに必要なインストールを実行
の通りに各種必要ファイルをインストールしていきましょう。
ただし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は、プログラミング言語Pythonにおいて、データ解析を支援する機能を提供するライブラリである。特に、数表および時系列データを操作するためのデータ構造と演算を提供する[2]。PandasはBSDライセンスのもとで提供されている[3]。
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