2010年05月

TwitterAPI 検索をしてみよう その5


Twitterの検索APIを使っていて、不思議な現象にぶち当たりました。

あるキーワードで検索していたのですが、ある時から検索件数が著しくへってしまいました。
何かと思って検索した結果のデータを眺めていたのですが、取得出来ているデータの「iso_language_code」が「ja」以外でした。

検索した回数によって「仕打ち」を受けたのかななんて思って、別のマシンが別のプロバイダからもやってみましたが、結果は同じでした。

なんらかの理由で特定のキーワードを検索対象から外すなんてことがあるんですかね??

だれか教えてぇ~

TwitterAPI 検索をしてみよう その4


Twitterの検索APIでは、最大検索件数が1,500件と決められています。
検索の対象にすることができるのは過去7日間ですので、1週間以内に1,500件以上のつぶやきがあった事柄に関しては、途中までしか取れないというさみしい結果になってしまいます。

普天間なんかは1週間で余裕で1,500件を突破するので、期間的に検索可能でも検索できないつぶやきが出てきてしまうんですよね。。

その1,500件の壁を超えるには、検索オプションの

max_id=つぶやきのID

を使えばOKです。

max_idは指定したIDよりも小さいIDを対象としなさいということです。

検索APIでは日付の降順で検索結果が返ってきます。
また、つぶやきのIDは時系列で昇順に付番されているようです。

ということは・・・・・

検索結果の1,500件目のIDをmax_idに指定し、検索結果の一件目を無視すれば1,499の検索結果が取得できます。
それでも足りなければ、さらに・・


http://search.twitter.com/search.atom?q=jef&rpp=100&page=15

で取得できる最後のIDをmax_idに指定

http://search.twitter.com/search.atom?q=jef&rpp=100&page=1&max_id=xxxxxxxx

として、一件目は無視してあげればOKですよ。

これで1,500件の壁は超えられました。

次回は検索APIを色々試して「謎」だったことなど。。

TwitterAPI 検索をしてみよう その3


Twitterの検索APIは、1ページあたりの件数が決まっていて、ページ遷移ができるようになっています。

デフォルトでは1ページあたり15件になっていますが、1ページあたり100件までは設定変更が可能です。

rpp=件数

というオプションでいけるようです。

たとえば、「jef」というキーワードを検索し1ページあたり100件の結果にしたい場合、

http://search.twitter.com/search.atom?q=jef&rpp=100

とすればOKです。

それ以上の検索結果が必要であれば、ページ遷移をする必要があります。ページ数は検索最大数の1,500件をページあたり件数で割ったページが最大ページです。
たとえば、ページあたり20件なら75ページ、100件なら15ページという具合です。

ページを指定する場合は

page=ページ番号

を加えます。

たとえば、、「jef」というキーワードを検索し1ページあたり100件で5ページ目の結果にしたい場合、

http://search.twitter.com/search.atom?q=jef&rpp=100&page=5

とすればOKです。

これで1,500件までは検索が可能になりました。

次回は1,500件の壁を越えてみましょう。

TwitterAPI 検索をしてみよう その2


前回、まずは検索をしてみようということで、検索ワードだけを指定して検索してみましたが、今回は検索条件を色々いじってみましょう。

・日本語だけのつぶやきに絞りたい
お箸の国のひとだから・・・ってわけではないですが、日本語のつぶやきだけを検索したいってことはありますよね。検索ワード自体が日本語ならなにもしなくてもいいですが、検索ワードは英語だけど、日本語だけ欲しいなんてケースもありますもんね。

そういう場合には

lang=ja

というオプションをつけると良いようです。

たとえば、「jef」というキーワードを検索する場合、

http://search.twitter.com/search.atom?q=jef

とすると、日本語以外のつぶやきも取得できてしまいますが、

http://search.twitter.com/search.atom?q=jef&lang=ja

とすれば、日本語だけに絞れるのです。

・つぶやかれた期間を指定したい
つぶやかれた期間の指定は、日付単位でしかできないようです。それもTwitterで持っている書込み日時はグリニッジ時間になっているので、グリニッジ時間ベースでの日付指定となっています。ということで余り活躍の機会のないオプションかもしれませんが。。

期間はqのなかのオプションとして追記します。

q=jef+since:YYYY-MM-DD+until:YYYY-MM-DD

とします。

たとえば、「jef」というキーワードで2010年5月22日から23日までなら

http://search.twitter.com/search.atom?q=jef+since:2010-05-22+until:2010-05-23

とすればOKです。

ただし、日本語だけに絞ろうとして「lang=ja」をつけると一件も検索されなくなってしまいます。。。
何か相性があるのでしょうかね。。

ちなみに日本語の検索ワードの場合はUTF8でURLエンコーディングしてから検索してくださいね。
「普天間」を検索するなら

http://search.twitter.com/search.atom?q=%e6%99%ae%e5%a4%a9%e9%96%93+since:2010-05-22+until:2010-05-23

という感じで。

次回はページ遷移周りに関してです。

TwitterAPI 検索をしてみよう その1


ここ最近、Twitterって話題ですよね?
ダルビッシュがやってたりして、だんだんと浸透している感じがします。

ただ使うだけじゃなくて、TwitterAPIを使っていろいろ試してみたりも出来るってのも人気の理由ですかね。

さっそく、私も試してみました。

Java使いとしては「Twitter4J」なるラッパーを使っても良いのですが、せっかくWEBサービスとして提供されているので、Javaから直接WEBサービスをたたいてみました。

まず、やってみたいのは検索ですかね。
Twitterの公式ページの検索機能はあまり親切ではないので、自作ってみましょう。

JavaのHttpClientの説明は割愛して、Webサービスだけに話を絞ります。

検索用のAPIは
http://search.twitter.com/search.atom?q=検索文字
システムから呼び出す場合はjsonの方が使い勝手がいいですが、ブラウザで見やすいatomにしてあります。

で検索が可能です。

検索文字は日本語の場合はUTF8でURLエンコードしてあげてくださいね。

と、ここまではTwitterの公式ページで出来ること変わりませんね。

・1ページの表示件数を100件にする
・ページ遷移する
・期間を指定する
・日本語のつぶやきだけを見たい
・1,500件縛りをクリアする

なんかができると、結構使えそうですよね。

今回はここまでということで、次回課題を一つ一つクリアしていきましょう。


livedoor プロフィール
QRコード
QRコード
  • ライブドアブログ