はじめに
スイッチサイエンスに自分で設計して商品化した基板を出品しているんですけど、売れたかどうかすごく気になってしまうんですよ。そいで、毎日検索しに行ってしまっているんです。ツイッターとかのいいね通知見にいっちゃうやつです。承認欲求モンスターが爆発しています。あんまりに酷いんで、これはちょっとどうにかしないと。ということで代わりにPythonでスクレイピングしてline botで通知するかんじにしていきたいと思います。(いや在庫管理という側面からも確認するのは大事なんですよ汗)
イメージとしてはこんな感じです。 サーバーはローカルネット内でラズパイを使用します。Pyrhonでスクレイピングさせて在庫データをスイッチサイエンスに取りにいきます。取ってきたデータはLine botに投げて通知が行くようにします。これをcrontabで定期実行させちゃおうという作戦です。
環境
・Raspberry pi 3 model B(os: raspbian)
・Python 3.9.2
Line botの登録
Line botの準備はこちらのブログを参考にやっていきました。 chuna.tech
ラインボットPythonで試してみた。めっちゃ楽しい!
— 鯖鯖sabanium (@sabasabasabaniu) 2022年12月30日
スイッチサイエンスの売上気になって毎日何回も見ちゃうから、一日一回これに通知させよう。#Python #LINEbot pic.twitter.com/YYonLnLWbT
コード
コードは在庫数のデータをスクレイピングでとってくる部分と、そのデータを受け取ってLine botに送る部分に分けてかいてみた。参照先のページは以下のURL。 Atmega328P スケッチ書き込み装置治具www.switch-science.com 在庫数の部分がターゲット
gist13aab99e9a376ede0c5bfbc673cc7197
上のコードで在庫数の部分を引っ張て来て、以下でLine botへ出力。
gist1619909d935f12de1655461cbef827cd
Python使ってスイッチサイエンスの在庫botできた!あとはサーバーで一日一回ぐらい実行してもらうか。#python pic.twitter.com/WdhUXBZ7TF
— 鯖鯖sabanium (@sabasabasabaniu) 2022年12月30日
crontab で定期実行の設定
pythonで在庫数の通知まではできるようになったので、あとは定期的に実行するように設定してやる。 crontabで先ほど作ったプログラムを実行できるようにファイルの権限を書き換えておこう。
$sudo chmod 777 search.py stock_sw.py
権限の変更は終わったで、あとは定期実行の設定をするだけ。以下のコマンドを実行すると定期実行するスクリプトの設定ができる。
$crontba -e
今回はpython3で実行する形でいくので以下みたいな感じ。朝の7時と15時に実行するように設定してみよう。ファイルのパスは絶対パスで書いた方が問題がないと思うぞ。
0 7 * * * python3 /home/xian/Documents/sw_stock/stock_sw.py > tmp.log 2>&1 0 15 * * * python3 /home/xian/Documents/sw_stock/stock_sw.py > tmp.log 2>&1
定期実行されるとこんな感じになる。
作ったLINE bot順調に稼働してる pic.twitter.com/8DMbXZH29m
— 鯖鯖sabanium (@sabasabasabaniu) 2023年1月8日
ちなみにラズパイはこんな感じで設置しているよ
ラズパイは机の金属部分に磁石で設置。悪くないぞ pic.twitter.com/uzQZm9yPed
— 鯖鯖sabanium (@sabasabasabaniu) 2023年1月8日
<参考文献>
PythonでWebスクレイピングをする方法を解説!【入門…|Udemy メディア
BeautifulSoup4で親子、兄弟、前後要素の検索方法 | せなブログ
Python | 関数からreturn文を使って呼び出し元へ戻り値を返す
Pythonで文字列を分割(区切り文字、改行、正規表現、文字数) | note.nkmk.me
cronでPythonスクリプトを自動実行する | masayanblog
Raspberry Piでcronを使ってPythonを定期実行する - Raspberry Pi & Python 開発ブログ ☆彡