いいかげん日記

思いついたことをただひたすら書き殴るいいかげんな日記です。

やり遂げたので書いてみた

更新です。

今回の話題はこれ↓
スクレイピング

はい。
今日は休日なので家にいます。

Macbook Proが届いたので、土曜日から今までひたすら遊んでいました。
せっかく新しいPCが手に入ったので、今までやろうと思っていてなかなか手が出せなかったことに挑戦しようと思っています。

PC企画第一弾はスクレイピングです。
設定したwebページの情報を自動で巡回して拾ってくることを意味する言葉と理解しています。
実はこの言葉も土曜日に初めて知りました。

そんな状態から曲がりなりにも機能するものを作り上げましたよ。
(いやー大変だった。。)

私が作った機能はこれ↓

  1. 気象衛星画像を取得してデスクトップに映し出す機能(更新頻度 2回/時間)
  2. 自宅周辺の今日・明日の天気、最高気温、最低気温をテキストでデスクトップに映し出す機能(更新頻度 1回/時間)
  3. ドル円の為替レートをデスクトップに映し出す機能(更新頻度 1回/時間)
  4. 日経平均株価のデータを取得してストックし、ローソク足グラフを生成してデスクトップに映し出す機能(更新頻度 1回/日)
  5. 自分の持ち株情報に基づいて損益額のグラフを生成してデスクトップに映し出す機能(更新頻度 1回/日)


紆余曲折を経たので何を使ったか頭の中がぐちゃぐちゃなのですが、上の機能を作る過程で触れたものはこれ↓

  1. GeekTool デスクトップ画面に貼るために使いました。簡単なものならこれだけで作れました。
  2. Shellscript いやー苦戦しましたね。今まで触れた言語とは勝手が違ったので本当にしんどかった。。
  3. gnuplot ローソク足グラフを作るために使いました。これは使ったことがあったのでまだマシだったかな。
  4. PHP これも初。途中までは使っていたんですが、最終版では使われているような使われてないような。。
  5. awk 一部で使用しました。んー、なんかよくわからない言語です。
  6. crontab この分類の中に加えるものなのかどうかよくわかりませんが、これも使いました。これもしんどかったなぁ。。
  7. Homebrew 何をするソフトなのかよくわからないですが、とりあえずこれがないと作れないみたいだったので入れました。
  8. vim crontabを使うときに関係したような。。。最後の方ではあからさまに「vim」とは打たなかったけど使ってたのかな?

他にもあったような気がしますが、覚えていません。
詳しい方がこの羅列を見たらたぶんカオスなんだろうな 笑
違う言語が入り乱れたパッチワークのソースファイルに仕上がったのですが、普通どんな風に作るんでしょうね?
それもこれも、ターミナルが全部処理できちゃうことが原因です。詳しく知らないと境界線がわからないんですよね。

そんな状態で作っているので、プログラムの文法を解説しながら作り方を示すことは不可能ですし、ほぼ確実に不確かな情報を流布することになりますので作り方の公開はやめておきます。
ですが、この経験を通じて学んだことがあるのでそれをご紹介します。

  1. 常にパスを意識せよ

プログラムの基本中の基本かもしれませんが、これを意識できるかできないかで次のステップに進めるかどうかが決まるような気がします。
今回も、ターミナルにベタ打ちしたときには通るのにcrontabでは通らないという不具合に相当苦しめられました。
フルパス最高。

  1. sudoに注意!

インストールやらcrontabを使うときなんかによく出てくるコマンド。前々から知ってはいたのですが、「OSの開発に多大な功績を挙げた須藤さんの名前にちなんだコマンドなのかな?」なんて思っていましたがどうやら違うみたいですね。
「root権限で実行」というPC上での絶対的な命令を与えるためのコマンドのようです。
crontabを使うときにはこいつにも苦しめられました。(使わなきゃいけないってことがわからなかった)

  1. アクセス頻度に注意

これミスると捕まるみたいです。高速アクセスはサイバー攻撃の手法になるみたい。要注意!
岡崎市立中央図書館事件 - Wikipedia

あと、序盤にはまったのは画像の取得。
wgetは、曲者でした。
画像が取れた!と思ってもそれを自動更新するとなるとどうにもできない。
そこでネットを徘徊して、書いては消し書いては消しを繰り返してようやくできました。
テキストよりも断然難しかった。
ありがちな落とし穴は一通りはまったような気がします 笑

gnuplotローソク足グラフをアレンジする方法は、日本語の情報が少なかったので地味に時間を食いましたが、このサイトに助けられました。
Thank you!
Chart Gnuplot
ちなみに仕上がりはこんな感じ
f:id:theta_proto:20170918145407p:plain
図の背景を透明にしているので、後ろの色はデスクトップ画面のものです。
ローソクも白でいいかもしれないなぁ。


他にも様々なサイトが力になりました。多過ぎてここには挙げられませんが、非常に助かりました。ありがとうございます。
プログラミングってこういうところがいいですよねー。


自分でも自動化のシステムが作れるとは、感動です。
しばらくは余韻に浸りたいと思います。

では、今回はこれにて!