使用 twitter4j 搜索 100 多个查询
Using twitter4j to search through more than 100 queries
我正在尝试创建一个从 Twitter 搜索查询的程序。我遇到的问题是 API return 只有 100 个结果查询,当我尝试检索更多结果时,它会再次给我相同的结果。
User user = twitter.showUser("johnny");
Query query = new Query("football");
query.setCount(100);
query.lang("en");
int i=0;
try {
QueryResult result = twitter.search(query);
for(int z = 0;z<2;z++){
for( Status status : result.getTweets()){
System.out.println("@" + status.getUser().getScreenName() + ":" + status.getText());
i++;
}
}
该程序将打印 200 个与查询 "football" 相关的结果,但它没有给我 200 个不同的结果,而是打印了 100 个结果两次。我的最终结果应该是我可以在速率限制允许的范围内打印尽可能多的不同结果。我见过 return 对特定用户的响应超过 100 个的程序,但我还没有看到可以 return 像 "football" 这样的独特查询的超过 100 个响应的程序。
要在搜索查询中获得超过 100 个结果,您需要调用查询的下一次迭代。
Query query = new Query("football");
QueryResult result;
int Count=0;
do {
result = twitter.search(query);
List<Status> tweets = result.getTweets();
for (Status tweet : tweets) {
System.out.println("@" + tweet.getUser().getScreenName() + ":" + tweet.getText());
Count++;
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
while ((query = result.nextQuery()) != null);
System.out.println(Count);
System.exit(0);
我刚刚测试了它并收到了 275 条推文,请记住 documentation:
The Search API is not complete index of all Tweets, but instead an index of recent Tweets. At the moment that index includes between 6-9 days of Tweets.
并且:
Before getting involved, it’s important to know that the Search API is focused on relevance and not completeness. This means that some Tweets and users may be missing from search results. If you want to match for completeness you should consider using a Streaming API instead.
我正在尝试创建一个从 Twitter 搜索查询的程序。我遇到的问题是 API return 只有 100 个结果查询,当我尝试检索更多结果时,它会再次给我相同的结果。
User user = twitter.showUser("johnny");
Query query = new Query("football");
query.setCount(100);
query.lang("en");
int i=0;
try {
QueryResult result = twitter.search(query);
for(int z = 0;z<2;z++){
for( Status status : result.getTweets()){
System.out.println("@" + status.getUser().getScreenName() + ":" + status.getText());
i++;
}
}
该程序将打印 200 个与查询 "football" 相关的结果,但它没有给我 200 个不同的结果,而是打印了 100 个结果两次。我的最终结果应该是我可以在速率限制允许的范围内打印尽可能多的不同结果。我见过 return 对特定用户的响应超过 100 个的程序,但我还没有看到可以 return 像 "football" 这样的独特查询的超过 100 个响应的程序。
要在搜索查询中获得超过 100 个结果,您需要调用查询的下一次迭代。
Query query = new Query("football");
QueryResult result;
int Count=0;
do {
result = twitter.search(query);
List<Status> tweets = result.getTweets();
for (Status tweet : tweets) {
System.out.println("@" + tweet.getUser().getScreenName() + ":" + tweet.getText());
Count++;
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
while ((query = result.nextQuery()) != null);
System.out.println(Count);
System.exit(0);
我刚刚测试了它并收到了 275 条推文,请记住 documentation:
The Search API is not complete index of all Tweets, but instead an index of recent Tweets. At the moment that index includes between 6-9 days of Tweets.
并且:
Before getting involved, it’s important to know that the Search API is focused on relevance and not completeness. This means that some Tweets and users may be missing from search results. If you want to match for completeness you should consider using a Streaming API instead.