百聞は一見にしかず
TL;DR
- Rubyでコンソールの画面制御
- スクレイピング(Nokogiri)で記事取得
- 最低限の機能を実装しただけの醜いコードを公開してあります...
これはなに?
「毎日のように閲覧するQiitaをコンソールから開ければ便利なのでは?」
と思い、なんとなく触れたことのある技術で作れそうだったため作ってみたものです
使用したもの
ruby 2.3.3
gem nokogiri
gem curses
どうやってるの?
画面制御
コンソールの画面制御にはcurses
というgemを用いました
このcurses
ですが、あまり資料が転がっていなかったため、
個人的にメモとしてまとめてみました
情報取得
Qiitaから情報を取得するために、Nokogiri
というgemを使用しました
Webサイトから情報を抽出する技術のことをスクレイピングといい、Nokogiri
を使うことでスクレイピングが簡単に出来ちゃいます
動的なコンテンツから情報を抽出したり、見やすい形に整形して出力したりできるので、
株価の取得だとかニュースの見出し一覧を取得するなど使い方は様々です
筆者は過去に大学の休講情報をスクレイピングしたりしてました
このあたりを参考にするといいと思います
Nokogiriを使ったRubyスクレイピング [初心者向けチュートリアル]
筆者もお世話になりました
ただし、スクレイピングには法的なお話がついて回るので、注意しましょう
Webスクレイピングの法律周りの話をしよう!
ソースの公開/配布
最低限の機能の動作確認をした段階のコードを公開しています
GitHub
ですのでリファクタリングもしておらず非常に汚い状態なので正直、恥部を晒している気分です...
が、醜いコードを晒したほうがたくさんの指摘やアドバイスが貰えるのでは?という言い訳もちゃんと考えております
使用方法
Nokogiri
とCurses
のgemのインストールし、qiita_cui.rb
を実行してください
操作方法
- p : カーソル移動(上)
- n : カーソル移動(下)
- f : 次ページ
- b : 前ページ
- q : 終了
- Enter : 決定
- [Sort] : 投稿順/最新いいね順の切り替え
- [Search] : 検索ワードの変更(タグ検索なので現状1つのキーワードのみ)
知りたいこと
- より良い実装
- 高速化手法
- Rubyの実行ファイル化
コマンドひとつで動かしたい(エイリアス以外) - 矢印キーでの入力
- これ法的に大丈夫?(スクレイピングだし)
おわりに
筆者、まだまだ未熟者ですので、いろいろとご教授いただければと思います
QiitaにはAPIがありますので、スクレイピングが利用規約的に色々あぶなければ公開を停止します
というかAPI公開されてるんだからそっち使えばいいじゃん