5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WindowsのRでツイートを検索する

Last updated at Posted at 2014-12-17

##背景
twitteRを用いればR言語でツイートを検索できますが、以下のページに記述した通り、現行リリースされているバージョンではくっそ面倒です。

また、現在、パッケージとしてリリースされている1.1.7バージョンではいくつかのバグがあります。
https://github.com/geoffjentry/twitteR/blob/master/NEWS

・UTF8が文字化けする
・ユーザIDが64ビット対応していない

ここではGitHub中の最新コードを使用して日本語の文字を検索してみます。
https://github.com/geoffjentry/twitteR/

注意
2015-02-11に1.1.8がリリースされたので、Githubからでなくても大丈夫になっているはずです。
http://cran.r-project.org/web/packages/twitteR/index.html

##環境
Windows7
R3.1.2 RGuiで行う
ライブラリは下記のフォルダに格納するものとする。
C:\R31_Package

##手順
1.依存するパッケージと、Githubからインストールするツールをインストールします。

install.packages(c("devtools", "rjson", "bit64", "httr"),"C:\\R31_Package")

2.GithubからTwitteRをインストールします

.libPaths("C:\\R31_Package") #ライブラリのパスを指定
library(devtools) #警告でますが無視してインストールできました。
install_github("twitteR", username="geoffjentry")

3.ツイートを検索します

library(twitteR)
setup_twitter_oauth("Consumer Key","Consumer Secret ","Access Token","Access Token Secret") # ローカルファイルにキャッシュするか聞かれます。どっちえらんでも動きます。
searchTwitter(iconv("おっぱい","CP932","UTF-8")) #日本語の場合はUTF8に変換する

oppai.png

コードを見る限り、since、untilもサポートしているので、昔にさかのぼって取得することもできるかと思います(未検証)

##絵文字が入っている場合の対応
Twitterの公式クライアントでは機種依存の絵文字が入っている場合、サーバー側で画像に変換して表示して返しています。
対して、TwitterAPIでは、絵文字が入っている場合、その文字コードをそのまま返します。おそらく、これはUnicodeの外字領域を使っており、環境によっては文字として表示できません。

さいわい、iconvではsub引数を用いて、この変換できない文字を置き換えることができます。
以下がUTF8に変換できない文字を削除する例になります。

# 絵文字が入るように検索
ret=searchTwitter("needtec.sakura.ne.jp");
for(r in ret) {
  print(iconv(r$text, "UTF-8", "UTF-8", ""))
}
5
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?