おぴよの気まぐれ日記

おぴよの気まぐれ日記

岡山やプログラミング、ファッションのこと、子育てや人生、生き方についての備忘録。

【Ruby】rssを取得して簡単にまとめサイトが作っちゃおう!

こんばんは。早くエンジニアになりたいopiyoです。

最近は会社で全くコードを書くことが出来ず、焦りまくっていう日々を歩んでいるのですが自分で少しでもコードを書く時間を作ろうと思ってRailsアプリを作っています。

その中でトレンド情報を取得して表示したいなーなんて思っていたのですが、Googleもyahooも今は提供してないみたい。 でも何かしら情報を取得できる術はないかなーと色々調べていたところ、rssの情報を取得することは何だか出来そうってことが分かったのでコードを書いてみました。

rss情報を取得できれば、簡単にまとめサイトとか作れちゃいそうでワクワクしちゃいますよね。

今回はGoogleキーワードを使ってrss情報を取得するってのをやろうと思います。

Googleキーワード

Googleキーワードってのは情報取得したいキーワードを設定しておき、メールかrssで最新情報を取得出来ちゃうっていう優れものですね。

f:id:opiyotan:20180115193947p:plain

使い方は簡単で、Googleキーワードのサイトに行って取得したいキーワードと各種設定をするだけ。

画像の例だと今大流行中の「仮想通貨」のキーワードで引っかかった最新情報が常に取得できます。 これを上手く使えば仮想通貨のまとめサイトみたいなものも簡単に作れるかもしれませんね。

作成するとrssのアイコンが表示されるので、それをクリックしてURLをメモしておいてください。

Rubyのコード

rssから情報を取得してターミナル上にタイトルを表示させてみます。

require 'feedjira'

sites = [
  "https://www.google.co.jp/alerts/feeds/17514568391276082754/11140714952475134210"
]

@list = []
sites.each do |site|
  rss = Feedjira::Feed.fetch_and_parse site
  rss.entries.each do |item|
    @list += [
      :id => item.id,
      :title => item.title
    ]
  end
end

puts @list

feedjiraというgemを使ってます。 Feedjira::Feed.fetch_and_parseこの辺りが肝で色々な情報を取得できそうなので、色々試してみたいと思います。

他の部分は取得したデータをグルグル回して情報を取得して@listに突っ込んで表示されているだけです。

めちゃくちゃ簡単。

この他の項目に取得したサイトURLが取得できるので、これを使って一覧化させればまとめサイトが出来ちゃうかも?

実行方法

実行方法はgemをインストールして、rubyを付けて実行するだけ。

$ gem install feedjira
$ ruby rss-saple.rb
W, [2018-01-15T19:43:47.599363 #10005]  WARN -- Feedjira: Failed to parse last modified ''
{:id=>"tag:google.com,2013:googlealerts/feed:954412367556280749", :title=>"<b>仮想通貨</b>イーサリアム、2018年は時価総額を3倍に拡大か"}
{:id=>"tag:google.com,2013:googlealerts/feed:2024205748243453586", :title=>"【市況】ブラジル、ファンドによる<b>仮想通貨</b>投資を規制【フィスコ・ビットコインニュース】"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"<b>仮想通貨</b>の詐欺で「テクノロジー批判」し炎上 「いや、人間の悪意のせい」"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"Oracle WebLogic Serverに脆弱性攻撃--<b>仮想通貨</b>の発掘を狙う"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"【市況】<b>仮想通貨</b>取引所クラーケン、稼働停止から復旧【フィスコ・ビットコインニュース】"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"インドネシアが中国、韓国に次いで<b>仮想通貨</b>取引禁止の最終段階に"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"最大級のQ&amp;Aサイト「OKWAVE」を運営するオウケイウェイヴ、<b>仮想通貨</b>交換業の登録申請を行うことを決定"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"韓国、<b>仮想通貨</b>の匿名取引に罰金科す方針【フィスコ・ビットコインニュース】"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"個人投資家株師孔明:メルカリが<b>仮想通貨</b>ビジネスに参入か?【FISCOソーシャルレポーター】"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"ウクライナ、政府や中央銀行からなる<b>仮想通貨</b>規制グループを結成"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"Oracle WebLogic Server の脆弱性(CVE-2017-10271)を悪用する攻撃事例について"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"<b>仮想通貨</b>『Centrality(セントラリティ) トークン名:CENNZ(センズ)』のICOが6分で完売!"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"【社会】政府「<b>仮想通貨</b>実名制を滞りなく推進…ブロックチェーン育成」"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"2018年のデジタルアセットのトレンド予測。キーワードは「相互運用性」"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"コラム:ビットコイン、「リアルマネー」に絶対ならない訳"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"収益不動産売買に<b>仮想通貨</b>NEW"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"韓国が<b>仮想通貨</b>取引を禁止へ、大手取引所捜査に市場が動揺"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"インドネシア中銀が<b>仮想通貨</b>売買を行わないよう国民に呼びかけ"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"2017年の<b>仮想通貨</b>のパフォーマンスランキングが発表される。1位はRipple"}
{:id=>"tag:google.com,2013:googlealerts/feed:111", :title=>"【期間限定】長期インターンサイトInfrAに登録すると抽選でビットコインをプレゼント"}

rssの情報

取得したrss情報はこんな感じ

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:idx="urn:atom-extension:indexing">
<id>
tag:google.com,2005:reader/user/17514568391276082754/state/com.google/alerts/11140714952475134210
</id>
<title>Google アラート - 仮想通貨</title>
<link href="https://www.google.com/alerts/feeds/17514568391276082754/11140714952475134210" rel="self"/>
<updated>2018-01-15T09:45:00Z</updated>
<entry>
<id>
tag:google.com,2013:googlealerts/feed:954412367556280749
</id>
<title type="html"><b>仮想通貨</b>イーサリアム、2018年は時価総額を3倍に拡大か</title>
<link href="https://www.google.com/url?rct=j&sa=t&url=http://hedge.guide/news/ethereum-2018.html&ct=ga&cd=CAIyHGM1ZjhiY2MyYmY4NTIxMmU6Y28uanA6amE6SlA&usg=AFQjCNH4fLhHDJ0OwroDbbn7kJ6iMyjgEQ"/>
<published>2018-01-15T09:45:00Z</published>
<updated>2018-01-15T09:45:00Z</updated>
<content type="html">
<b>仮想通貨</b>イーサリアムの共同開発者Steven Nerayoff氏は、8日のCNBCのインタビューで、<b>仮想通貨</b>市場全体の市場拡大に伴って、今年はイーサリアムの時価総額を現在の3倍に増幅させると述べた。 イーサリアムは、ビットコインに次ぐ市場規模を持つ<b>仮想通貨</b>だ。<b>仮想通貨</b>取引の契約を自動的に実行し、取引内容を&nbsp;...
</content>
<author>
<name/>
</author>
</entry>
<entry>
<id>
tag:google.com,2013:googlealerts/feed:2024205748243453586
</id>
<title type="html">【市況】ブラジル、ファンドによる<b>仮想通貨</b>投資を規制【フィスコ・ビットコインニュース】</title>
<link href="https://www.google.com/url?rct=j&sa=t&url=https://kabutan.jp/news/marketnews/%3Fb%3Dn201801150658&ct=ga&cd=CAIyHGM1ZjhiY2MyYmY4NTIxMmU6Y28uanA6amE6SlA&usg=AFQjCNGyvJMQq3YiEWr93lA0gM354A-FPA"/>
<published>2018-01-15T09:45:00Z</published>
<updated>2018-01-15T09:45:00Z</updated>
<content type="html">
ブラジル証券取引委員会(CVM)は、<b>仮想通貨</b>を金融資産として認めないと定めたほか、海外のファンドへの出資を通した<b>仮想通貨</b>への投資についても、CVMの方針確定を待つことも併せて定め ... ブラジル証券取引委員会(CVM)とブラジル中央銀行は、12月に<b>仮想通貨</b>に関連するリスクを警告する共同声明を発表していた。
</content>
<author>
<name/>
</author>
</entry>

まとめ

分かっちゃえば、めちゃくちゃ簡単。

アイデア次第ですげーのが作れるかも。なんてね。