LoginSignup
9
11

More than 5 years have passed since last update.

Qiitaの記事一覧をCLIで取得/選択してブラウザで閲覧できるようにしてみた

Last updated at Posted at 2018-05-27

百聞は一見にしかず

qiita.mov.gif

TL;DR

  • Rubyでコンソールの画面制御
  • スクレイピング(Nokogiri)で記事取得
  • 最低限の機能を実装しただけの醜いコードを公開してあります...

これはなに?

「毎日のように閲覧するQiitaをコンソールから開ければ便利なのでは?」
と思い、なんとなく触れたことのある技術で作れそうだったため作ってみたものです

使用したもの

ruby 2.3.3
gem nokogiri
gem curses

どうやってるの?

画面制御

コンソールの画面制御にはcursesというgemを用いました

このcursesですが、あまり資料が転がっていなかったため、
個人的にメモとしてまとめてみました

Rubyでコンソールの画面制御をしよう

情報取得

Qiitaから情報を取得するために、Nokogiriというgemを使用しました
Webサイトから情報を抽出する技術のことをスクレイピングといい、Nokogiriを使うことでスクレイピングが簡単に出来ちゃいます

動的なコンテンツから情報を抽出したり、見やすい形に整形して出力したりできるので、
株価の取得だとかニュースの見出し一覧を取得するなど使い方は様々です
筆者は過去に大学の休講情報をスクレイピングしたりしてました

このあたりを参考にするといいと思います
Nokogiriを使ったRubyスクレイピング [初心者向けチュートリアル]
筆者もお世話になりました

ただし、スクレイピングには法的なお話がついて回るので、注意しましょう
Webスクレイピングの法律周りの話をしよう!

ソースの公開/配布

最低限の機能の動作確認をした段階のコードを公開しています
GitHub

ですのでリファクタリングもしておらず非常に汚い状態なので正直、恥部を晒している気分です...

が、醜いコードを晒したほうがたくさんの指摘やアドバイスが貰えるのでは?という言い訳もちゃんと考えております

使用方法

NokogiriCursesのgemのインストールし、qiita_cui.rbを実行してください

操作方法

  • p : カーソル移動(上)
  • n : カーソル移動(下)
  • f : 次ページ
  • b : 前ページ
  • q : 終了
  • Enter : 決定
  • [Sort] : 投稿順/最新いいね順の切り替え
  • [Search] : 検索ワードの変更(タグ検索なので現状1つのキーワードのみ)

知りたいこと

  • より良い実装
  • 高速化手法
  • Rubyの実行ファイル化
    コマンドひとつで動かしたい(エイリアス以外)
  • 矢印キーでの入力
  • これ法的に大丈夫?(スクレイピングだし)

おわりに

筆者、まだまだ未熟者ですので、いろいろとご教授いただければと思います
QiitaにはAPIがありますので、スクレイピングが利用規約的に色々あぶなければ公開を停止します
というかAPI公開されてるんだからそっち使えばいいじゃん

9
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11