2018年5月6日日曜日

Python で Slack の bot を作りはじめた (2)

前回は Python から Slack にチャットを投稿するところを調べました。今回は Python でウェブページを監視するところを作ろうと思います。以前、アイカツの公式ウェブページのランキングを集計していたときは Powershell で力技でやっていましたが、Python には HTML パーサーという便利なものがあるらしいのでこれを使っていきたいと思います。

PythonでWebスクレイピングする時の知見をまとめておく
http://vaaaaaanquish.hatenablog.com/entry/2017/06/25/202924

「Requests」と「lxml」を使ってWebの情報を取得してみた
https://qiita.com/grm/items/56fe6570a5bea1ac474f

まずは、Python から HTTP アクセスをするための Requests というモジュールと、lxml と BeautifulSoup4 という HTML パーサーを導入します。
pi@raspberrypi:~ $ sudo pip3 install requsets
pi@raspberrypi:~ $ sudo pip3 install lxml
pi@raspberrypi:~ $ sudo pip3 install beautifulsoup4
ページの情報に沿って、こんな感じで導入したんだけど lxml がうまく動きません。lxml は中身は C で作成したプログラムらしく Raspberry Pi ではバイナリが正常に動作しないっぽい?
pi@raspberrypi:~ $ sudo apt-get install python3-lxml
で、結局 Raspbian に用意されている方を使ったらうまく動きました。Python も HTML パーサー初めて使うので理解できるまで結構苦労しました。半日くらいテストスクリプトで動作を確認しながら格闘しました。

Beautiful Soupを使ってスクレイピング
https://qiita.com/rusarusa/items/d7f014ba80d6fe7a3e07

さて、これで作りたい物の必要な要素がすべて揃いました。

15 年以上前から今現在まで 2ch (今は 5ch)をよく見ます。2ch ブラウザは自分の中では重要なキラーソフトです。Android だと chMate という素晴らしいブラウザがあるんですが、iOS は色々試したけど微妙なんですよねぇ。JaneStlye で一度は落ち着いたんだけど、iOS11になってから起動しても落ちることが多くて困っています。そして、アップデートする素振りも見えないのが更に困りもの。とはいえ、iOS アプリを作るなんてこともできません。そこで、ひたすら Slack にスレの書き込み内容をつぶやく bot 作ってみたらどうだろうと思いついて今回作ってみることにしました。
簡単にフローチャート書くとこんな感じになるのかなぁ。

続く