togetterのデータって、結局はtwitterのデータなので、twitterのAPIが使えれば大した問題ではないのかもしれませんが。
特定のまとめを抜き出す方法。普通にアクセスした1ページに表示されるデータを抜き出すのはすごく簡単ですね。
open-uri使って、openしたら、Nokogiriで切り出してください。
もしかしたらcssの名前は変わっているかもしれないので、そのあたりはソースを見ながら。
問題は「続きを読む」のボタンである。
これ、どうやらtogetter.com/api/moreTweets/#{id} というアドレスにPOSTしているようなのです。
ぐぐると古い記事しか出てこなくて、それによると昔はGETでアクセスできたらしいのですが。
そのためにnet/httpを使ってPOSTしています。
読むだけならログインせずとも、すべての情報が読めるサイトなのに、CSRFもやっているのでちょっと面倒です。
1ページ目のソース内のmetaにcsrf_tokenがあるので、それを抜き出します。
さらに、1ページ目にアクセスした時点で、Cookieにcsrf_secretが入っているのでそれを抜き出します。
csrf_secret、あとはログを見て適当に__gadsとかをcookieに突っ込みます。
そして、bodyをpage=2&csrf_token=#{csrf_token}としてPOSTしましょう。
今の仕様だと、page=2だけで、残りのツイートがすべて見られるかと思います。
もしかして、めちゃくちゃデータ数が多いと、ページングの仕方が変わるのかなぁ?
ちなみに「続きを読む」ではなく「1,2,3」だとtogetter.com/li/#{id}?page=2に、GETでアクセスするだけでそのページを読み込めます。
こっちの方が楽なので、こんな面倒なことしなくてもいいんですけど、どういう基準でページングの仕方が変わっているのかよくわかりません。
だけど、絶対にまとめているのは人なので、純度が高いです。
そういう意味では、twitterをそのまま使うよりノイズが少ないし、特定の方向性を持っているものだけを抜き出すのに、非常に有用だと思うんですよね。