fumihumiのブログ

プログラミングの備忘録

ruby でqiitaのトレンド収集スクリプト書いてみた

github.com

qiitaには毎日のトレンドのようなものを集めているページがあることをしり、どうにかして収集できないかと考えた。
先日友人がslackへの自動投稿をつくっていたのだが、slackだと過去の記事を遡る際に消えてしまうこともしばしば。。。。
永遠にバックアップをとりたいな。と思っていた時に思いついたのがgithubにpushし続ければバックアップになるんじゃないかと、

shellscriptで毎日自動化するもよし、
heroku schedulerで走らせるもよし、
どっかのサーバーのリソースを一瞬借りて実装するもよし、。
毎日手動で実行でも良い。

いづれかの方法でscriptを走らせればgitにpushされます。

以下:readme

qiita-trendsとは。

  • 1日一回qiitaのトレンドを取得するプログラム

how to

下記のgemを利用しているため、
bundle list にて下記を確認する必要がある。

  #shell command
require 'shell'
  #git
require 'git'
  #scraping
require 'nokogiri'
require 'open-uri'

source codeについて

WORKINGDIR = '~/qiita'
-> この定数は取得してきたqiita's-trendをどのディレクトリに保存するのかをさしています。 defaultでは。{/Users/"username"/qiita}配下に作成するようになってるので適宜変更してみてください。

DATE = Date.today.to_s.gsub('-','')
保存するファイル名は" #{DATE}.md "というスタイル (20171108.md)のようになっているスタイルを変える場合は、strftimeを使うことを推奨

get_docメソッドによって、(https://qiita.com/popular-items)ここにアクセスし、parseしている。 その後parseした'変数doc'にたいしxpathを利用し、欲しいデータ(trend投稿)にアクセスし、タイトルと、リンクを取得している

40行目以降の処理では、
Shellのインスタンスを作成し、workingdirがなければ新規に作成を試みます
→git init必須

最後の四行はgit add && commit && pushの流れです。

repo = Git.open(WORKINGDIR)
repo.add(".")
repo.commit("#{DATE}'s qiita trends")
repo.push