2016-06-16 5 views
0

twitteRパッケージを使用して、一連の公開Twitterプロファイルをスクラップし、それらのツイートをデータベースに収集しようとしています。私が取り組んでいる問題は、APIが利用可能なつぶやき全体を集めているようではないということです。ここでtwitteRツイートをスキップするパッケージ?

は私のコードです:

library(RColorBrewer) 
library(NLP) 
library(twitteR) 
library(foreign) 
library(wordcloud) 
library(tm) 
library(base64enc) 
library(httr) 

access_token<-"" #not including these, but the oauth works for me 
access_secret<-"" 
consumer_key<-"" 
consumer_secret<-"" 

###Scrapes Twitter Account 

setup_twitter_oauth(consumer_key, consumer_secret, access_token, access_secret) 
set.seed(123) 
user.tweets<-userTimeline('@HillaryClinton', n=3200) 
df<-twListToDF(user.tweets) 

このコードは、ヒラリー・クリントンのTwitterページから340件のつぶやきをつかみます。しかし、彼女には8,000個以上のつぶやきがあるので、なぜそれらを掴んでいるのか分かりません。私は最も早いツイートの日付をチェックし、今年の4月27日です。 APIの問題はその日付までしか収集していないのですか?

私は考えていませんその私はまた、このコードを友人のツイッタープロファイルで使用しているためです。それは彼の451のつぶやきのわずか106を集めましたが、それは2013年までずっと戻ってきました。しかしその場合、彼が作ったつぶやきをやめていました(彼らはリツイートではありませんでした)。

私のコードで何かが見当たりませんが、私には欠けているuserTimeline関数には何か制限がありますか?

ありがとうございました。

答えて

0

あなたのコードは私にとってもうまくいっているようですが、実際にはこのパッケージで作業していて、同様の問題に取り組んでいます。

なぜこのようなことが起こったのか理解が深すぎると、これはAPIの制限によるものであることがわかりました。hereを確認してください。私はこのことが避けられて、つぶやきを得ることができると確信しています。しかし、これはTwitterといくつかのコード行を削ることを意味する。このうちのソート

一つの方法は、例えば、ループのためにあなたにいくつかのタイマーを使用してことがあります

user.tweets<-userTimeline('@HillaryClinton', n=3200) 
df<-twListToDF(user.tweets) 
for(i in 1:100){ 
user.tweets<-userTimeline('@HillaryClinton', n=3200) 
df<-rbind(user.tweets) 
Sys.sleep(900) 
} 

この方法ごとに900秒、15分、あなたはクエリを実行しますが、このタイマーを変更することができますあなたが何を考えても。 または別のオプションを提案hereあなたはタイマーを与えられたスクリプトを実行することができます。私はあなたには、いくつかの繰り返しつぶやきを取得したい、このように思いますが、あなたは簡単でそれらを取り除くことができます。これは、このソリューションが理想的ではないかもしれない可能性が非常に高いのですが、これはかなりちゃんと私のために働いた

df[duplicated(df), ] 

。ポイントは少し創造的です! :)

私はそれが少し助けてくれることを願っています。誰かがそれを改善する方法についての提案があれば、私は聞いて喜んでします。

+0

これは、同じ応答を何度も何度も繰り返してくる(ヒラリーがツイートし、新しいツイートをつかんで、最も古いツイートを失うまで)。 Max IDパラメーターとSince_idパラメーターを使用して作業する必要があります。 Twitterこれに関するいくつかの良い文書を提供しています:https://dev.twitter.com/rest/public/timelines –

関連する問題