【发布时间】:2015-12-02 20:00:28
【问题描述】:
根据标题,鉴于 Twitter 有自己的限制,我如何才能获取至少 10,000 条推文?
Twitter 每 15 分钟允许 180 个查询。所以我打算使用Timer 和TimerTask 设置一个间隔并继续运行代码,直到我收到10,000 条这样的推文:
timer.schedule((TimerTask) getTweets("$FB up"),0,900000);
问题在于,每 15 分钟它会返回与前 15 分钟相同的数据。如何让它从前 15 分钟停止的地方继续?
下面是函数 getTweets(字符串术语)
int wantedTweets = 10000;
long lastSearchID = Long.MAX_VALUE;
int remainingTweets = wantedTweets;
Query query = new Query(term);
try{
while(remainingTweets > 0)
{
remainingTweets = wantedTweets - tweets.size();
if(remainingTweets > 100)
{
query.count(100);
}
else
{
query.count(remainingTweets);
}
QueryResult result = twitter.search(query);
tweets.addAll(result.getTweets());
Status s = tweets.get(tweets.size()-1);
long firstQueryID = s.getId();
query.setMaxId(firstQueryID);
remainingTweets = wantedTweets - tweets.size();
}
for (int i=0 ; i < tweets.size() ; i++) {
b = tweets.get(i);
//System.out.println(s);
//System.out.println("@" + b.getUser().getScreenName() + " - " + b.getText());
}
}
catch(TwitterException te)
{
System.out.println("Failed to search tweets: " + te.getMessage());
}
return b;
【问题讨论】: