是否有可能获得超过100条推文?
是否有可能使用Twitter4j API获得超过100条推文?
如果是这样,任何人都可以指出这样做的方法吗?
需要查看您的代码以提供特定于您的案例的代码示例,但您可以通过since_id
或max_id
执行此since_id
。
此信息适用于Twitter API。
要获得之前的 100条推文:
- 找到您刚刚使用查询检索到的集合中的最低 ID
- 执行相同的查询,并将
max_id
选项设置为您刚刚找到的ID。
要获得接下来的 100条推文:
- 找到您刚刚使用查询检索到的集合中的最高 ID
- 使用设置为刚刚找到的id的
since_id
选项执行相同的查询。
在Twitter4j中,您的Query
对象有两个表示上述API选项的字段: sinceId
和maxId
。
你不能每个请求加载超过100条推文,但我不知道你为什么要这样,而是你可以在“无尽页面”中加载所有推文,即每次用户滚动列表时加载10个项目。
例如
Query query = new Query("stackoverflow"); query.setCount(10);// sets the number of tweets to return per page, up to a max of 100 QueryResult result = twitter.search(query);
现在如果你想加载下一页简单容易
if(result.hasNext())//there is more pages to load { query = result.nextQuery(); result = twitter.search(query); }
等等。
以下是如何为用户获取所有推文(或至少高达~3200):
import java.util.*; import twitter4j.*; import twitter4j.conf.*; ConfigurationBuilder cb = new ConfigurationBuilder(); cb.setOAuthConsumerKey(""); cb.setOAuthConsumerSecret(""); cb.setOAuthAccessToken(""); cb.setOAuthAccessTokenSecret(""); Twitter twitter = new TwitterFactory(cb.build()).getInstance(); int pageno = 1; String user = "cnn"; List statuses = new ArrayList(); while (true) { try { int size = statuses.size(); Paging page = new Paging(pageno++, 100); statuses.addAll(twitter.getUserTimeline(user, page)); if (statuses.size() == size) break; } catch(TwitterException e) { e.printStackTrace(); } } System.out.println("Total: "+statuses.size());
使用最低id迭代到较旧页面的某些Java代码可能如下所示:
Query query = new Query("test"); query.setCount(100); int searchResultCount; long lowestTweetId = Long.MAX_VALUE; do { QueryResult queryResult = twitterInstance.search(query); searchResultCount = queryResult.getTweets().size(); for (Status tweet : queryResult.getTweets()) { // do whatever with the tweet if (tweet.getId() < lowestTweetId) { lowestTweetId = tweet.getId(); query.setMaxId(lowestTweetId); } } } while (searchResultCount != 0 && searchResultCount % 100 == 0);
为了增加Luke的方法,Twitter4j确实为查询提供了分页。 您可以尝试为查询提取多个页面。 设置每页的结果和页码。
但我建议首先尝试使用since_id
,然后尝试分页。
对于给定的查询,可以提取超过100条推文。 有关快速演示,您可以从http://preciselyconcise.com/apis_and_installations/tweets_extraction_from_twitter.php下载用于推文提取的twitter GUI应用程序。
通过从该查询的所有可用页面中提取查询结果,您将能够在该查询下提取超过100条推文(如果可用)。 我下载了该网站提供的GUI应用程序,我能够提取超过1000条推文用于查询#happy。