昔はGoogle NewsにもAPIがあったらしいんだけど、今はDeprecatedになっている。
しかしGoogle Newsには特定のキーワードでのニュース検索についてRSSがあり、これを利用することがでほぼAPIを使うのと同じ勢いでGoogle Newsを利用することができる。
欲しい情報としては、ニュース記事名、リンクアドレス、提供元、画像サムネイル、説明文。
今回はキーワード指定ありのニュースRSSが欲しかったんだけど、単にトップニュースを出したいという時は
https://news.google.com/news?output=rss
がトップニュースのRSSフィードになっている。
ただ、RSSを解析するとdescriptionの中にHTMLが埋め込まれていて一筋縄ではいかなかった。記事名とリンクアドレスは簡単に取れるけどそれ以外はRSSを解析すると出てくるHTMLを解析する必要がある。
この部分をRuby標準のxmlパーサーに入れてみたんだけど、htmlにはとか閉じタグのないタグがあるけどxmlパーサーはそれを受け付けてくれない。なのでそのためだけにnokogiriを使用。
このHTMLではid/class指定がほとんどされていないので綺麗にできずに、「N番目の要素」とかいう形で指定をしている。なのでRSSフィードの形式を変えられたらつかえないし、そもそも今の時点で100%いけるという確証はない。少なくともニュースにサムネ画像があるかどうかでこの部分の構造が変わるというのはわかったので対応したんだけど、それ以外にも変動要因があるのかもしれない。
とりあえず今のところは使えるけど、永続的につかえるもんでは無いと思う。