ほんじゃらねっと

ダイエット中プログラマのブログ

Node.jsでテレビの映画放映情報をWebスクレイピングしてSlackに通知する

最近素晴らしいことに家族内でSlackを使ってやりとりするようになった。

せっかくなので何かボット的なものを作ろう、ということで

昔Clojureで作った、

「映画情報をスクレイピングして通知する」スクリプトのNode.js版を作って、

定期的にSlackに通知するようにしてみたい。

blog.honjala.net

続きを読む

node.jsでWebスクレイピングして取得データを保存する

node.jsでデータ収集のためのWebスクレイピングを行う。

Webスクレイピングの流れというのはだいたい決まっていて、

  1. WebページにアクセスしてHTMLを取得する
  2. 取得したHTMLの中から必要なデータを抽出する
  3. 抽出したデータを保存する

の3段階となる。

続きを読む

効率的にやせるために栄養について理解するために栄養素データで遊ぶ

f:id:piro_suke:20170726011033j:plain

太り過ぎでそろそろ家族の冷たい視線と容赦ない言葉に耐えられなくなってきたので、

ダイエットに真剣に取り組みたい。

ダイエットといえば「食事のバランス」と「適度な運動」だけど、

おそらく日々の食事の方が体重への影響は大きいだろう、

ということでまずは「食」から取り組む。

取り組みを継続させるために重要なのは、

「このやり方が正しい」と信じ続けられるかどうかだと思われる。

食事制限や運動は、

その努力がどれくらい体重に反映されているのかが見えにくいので、

継続が難しく、なかなか成功しないのだろう。

そういえば食べたものがそれぞれ体にどんな影響を与えるのかも

全然知らないことに気づいたので、

まずは食品に含まれる栄養素とその効果について調べてみることにした。

続きを読む

Node.jsで非同期処理を不特定回数繰り返す方法をYouTubeのお気に入りタイトル一覧を取得するスクリプトを作りながら考える

f:id:piro_suke:20161212004436j:plain

YouTubeでお気に入りに入れた動画のタイトルを一覧化して見たくなったので、

YouTube Data API経由でデータを取得して表示するNode.jsスクリプトを作ってみた。

APIへのアクセス自体はサクッとできたのだけど、

複数ページデータを非同期で取得するフローのコントロールで苦労した。

Node.jsスクリプトを書く時は毎回このフローコントロールでつまづくのだけど、

慣れの問題なのだろうか。

今回はcaolan/asyncライブラリのおかげで何とか解決できた感じ。

async - Documentation

作成したスクリプトの内容を紹介しつつ、

非同期処理を不特定回数実行する際のパターンについて考えてみよう。

続きを読む

Windows/Linuxでディスクがいっぱいになった時に、フォルダ毎に使用している容量を確認する方法

f:id:piro_suke:20160725002531j:plain

PCやサーバの容量がなくなる、というのは案外よくあるもので、

年に1回くらいそんな事態に遭遇しては、

どのフォルダ・ファイルが容量を圧迫してるんだ!

容量を調べるためのコマンドなんだっけ?

とコマンドを探したりツールを探したりする。

なので、自分の忘備録も兼ねて、ここにまとめておく。

続きを読む

Twitter APIでタイムラインを分析して、フォロワーが最も活動している時間を見つける

Twitterに記事ツイートを投稿するなら、

閲覧者が多い時間帯に投稿した方が効率が良い。

ツイートが多い時間 = 閲覧者が多い時間だろう、

ということでTwitterのAPIを使って自分のフォロワーが

どの曜日、どの時間帯でツイートしているのかを調査してみた。

TwitterのAPIでどんな情報が取得できるか調べてみたところ、

自分がフォローしている相手のうち、自分をフォローしてくれている

ユーザー(いわゆるフレンド)を取得することができるらしい。

このデータを時間や曜日で集計するのが良さそうだ。

ということで、Streaming APIを使ったツイート収集スクリプトを

作成して、一週間(11/18〜11/24)流して集まったデータを集計してみた。

時間帯別ツイート数

f:id:piro_suke:20160207004453p:plain

このグラフを見た限りでは、

  • 12時台のツイート数が最も多く、昼間の時間帯の中では突出している
  • 次いで12時〜23時台が平均してツイート数が多い
  • 朝の8時台も出勤前か登校前かその前後の時間帯と比較すると多い
  • 午後より午前の方がツイートが多少多い
  • 0時以降はツイートが少ない

という感じ。

もっとデータを集めたらまた違った傾向が見えてくるかも。

曜日別ツイート数

f:id:piro_suke:20160207004445p:plain

曜日別では、

  • 平日の火曜〜金曜が土日月よりもツイートが多く、週末に近づくほど増えている

くらいしか読み取れなかった。

曜日別時間帯別ツイート数

f:id:piro_suke:20160207004437p:plain

なんだかそれっぽいグラフになった。

  • 時間帯別で18時台のツイートが多くなっていたのは、水曜・木曜のツイート数が突出していたからみたい。何かイベントがあったのかな?
  • 12時台のツイートが多いのは昼休みのある平日だけかと思ってたら、土曜日も平日と同じくらいある
  • 土日のツイート数は12時前後以外は似ている
  • 月曜は全体的にテンションが低いのかツイート数少なめ。19時過ぎてから元気出てきた
  • 木金と月は夜更かし傾向

ひとまず、今回のグラフを見た限りでは

8時、12時、20時あたりが閲覧者の多い時間帯ということかな。

おわり

データの収集とグラフ作成にはClojureとincanterを使った。

bar-chartとline-chartくらいしか使ってないけど、なかなか楽しく分析できた。

ビジュアライゼーション楽しい。