読者です 読者をやめる 読者になる 読者になる

togetterのデータを抜き出す方法

twitter プログラミング

togetterのデータって、結局はtwitterのデータなので、twitterAPIが使えれば大した問題ではないのかもしれませんが。

特定のまとめを抜き出す方法。普通にアクセスした1ページに表示されるデータを抜き出すのはすごく簡単ですね。

open-uri使って、openしたら、Nokogiriで切り出してください。

もしかしたらcssの名前は変わっているかもしれないので、そのあたりはソースを見ながら。

問題は「続きを読む」のボタンである。

これ、どうやらtogetter.com/api/moreTweets/#{id} というアドレスにPOSTしているようなのです。

ぐぐると古い記事しか出てこなくて、それによると昔はGETでアクセスできたらしいのですが。

そのためにnet/httpを使ってPOSTしています。

読むだけならログインせずとも、すべての情報が読めるサイトなのに、CSRFもやっているのでちょっと面倒です。

1ページ目のソース内のmetaにcsrf_tokenがあるので、それを抜き出します。

さらに、1ページ目にアクセスした時点で、Cookiecsrf_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でアクセスするだけでそのページを読み込めます。

こっちの方が楽なので、こんな面倒なことしなくてもいいんですけど、どういう基準でページングの仕方が変わっているのかよくわかりません。

togetterの元データは所詮twitterデータ。

だけど、絶対にまとめているのは人なので、純度が高いです。

そういう意味では、twitterをそのまま使うよりノイズが少ないし、特定の方向性を持っているものだけを抜き出すのに、非常に有用だと思うんですよね。