Twitter4j Search 使用
来源:互联网 发布:林建岳王祖贤 知乎 编辑:程序博客网 时间:2024/04/28 11:24
package Twitter;import twitter4j.*;import twitter4j.Twitter;import twitter4j.conf.ConfigurationBuilder;import twitter4j.Query;import twitter4j.QueryResult;import twitter4j.json.DataObjectFactory;//import twitter4j.Tweet;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBObject;import com.mongodb.Mongo;import java.util.Iterator;import java.util.List;import java.util.ArrayList;import com.mongodb.util.JSON;/** * <p>This is a code example of Twitter4J Streaming API - sample method support.<br> * Usage: java twitter4j.examples.PrintSampleStream<br> * </p> * * @author Yusuke Yamamoto - yusuke at mac.com */public final class TwitterSearch { /** * Main entry of this application. * * @param args */public DBCollection collection;public Mongo mongo;public int count = 1;public void LinkMongodb() throws Exception {/* * Link Mongodb * build a data named FourS2 * build a collection named Foursquare * */mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("TwitterMe"); collection = db.getCollection("DreamD"); System.out.println("Link Mongodb!");} public static void main(String[] args) throws TwitterException { final TwitterSearch pr = new TwitterSearch(); try { pr.LinkMongodb(); } catch (Exception e) {e.printStackTrace();} ConfigurationBuilder cb = new ConfigurationBuilder(); cb.setDebugEnabled(true) .setOAuthConsumerKey("7ZVgfKiOvBDcDFpytRWSA") .setOAuthConsumerSecret("JmeJVeym78arzmGthrDUshQyhkq6nWA9tWLUKxc") .setOAuthAccessToken("321341780-Zy7LptVYBZBVvAeQ5GFJ4aKFw8sdqhWBnvA3pDuO") .setOAuthAccessTokenSecret("foi8FnQCeN0J5cdwad05Q6d7dbytFayQn1ZOvmhF6Qc"); cb.setJSONStoreEnabled(true); //TwitterStreamFactory tf = new TwitterStreamFactory(cb.build()); TwitterFactory tf = new TwitterFactory(cb.build()); //TwitterStream twitterStream = tf.getInstance(); Twitter twitter = tf.getInstance(); Query q = new Query("BarackObama"); QueryResult result = twitter.search(q); List<Status> tweets = result.getTweets(); for (Status tweet : tweets) { //System.out.println(tweet); String str = DataObjectFactory.getRawJSON(tweet); System.out.println(str); try { DBObject dbObject =(DBObject)JSON.parse(str); pr.collection.save(dbObject); } catch (Exception e) { e.printStackTrace(); } } /*Paging paging = new Paging(15, 200); List<Status> statuses = twitter.getUserTimeline("BarackObama", paging); Iterator it=statuses.iterator(); while(it.hasNext()) { Status value=(Status)it.next(); String str = DataObjectFactory.getRawJSON(value); try { DBObject dbObject =(DBObject)JSON.parse(str); pr.collection.save(dbObject); } catch (Exception e) { e.printStackTrace(); } System.out.println(str); } */ pr.mongo.close(); } }
这个search的方法更宽泛些,也就是一个tweet的数据中凡是有的都可以作为query中的string去搜索。
但我仅仅可以拿到15个tweets,不知道为什么,网上的方法试了下,都没有达到要求。
研究twitter4j这段时间,感觉抓取twitter的数据主要就是三种方法:
1 streaming
2 timeline
3 query
如果要看一段时间内twitter的热点是什么,可以放入关键字用streaming去抓取,这个很快,一天大概就有100万条。
如果要抓某一个用户的数据,那么可以用timeline的方法。但是只有200条。
如果需要抓key word相关的所有tweet就用query了。query跟streaming相似,
但搜索的更广泛,同样也有缺陷。返回的结果太少。
twitter为什么限制这么多呢!烦人啊!
- Twitter4j Search 使用
- Twitter4J Streaming 使用
- Twitter4j getUserTimeline使用
- Twitter4J
- Twitter4j getFollowersIDs and getFriendsIDs 使用
- Android使用Twitter4j集成Twitter
- Android的Twitter4j庫問題
- twitter4j项目介绍
- twitter4j - update status例子(Java)
- Android优化: Android-Query vs Twitter4j
- Hibernate-Search使用
- Elastic Search使用
- Riak Search功能使用
- 使用 Google Ajax Search API
- 使用Google Ajax Search API
- android search对话框的使用
- search help exit的使用
- android 使用系统的 search
- C++经典程序100例【6】
- 跟随鼠标的时钟
- 简单Blog项目笔记之二:首页显示推荐信息
- C++经典程序100例【7】
- poj 1252 Euro Efficiency
- Twitter4j Search 使用
- C++经典程序100例【8】
- 【vim】repeat your last command
- open source HTML 5移动应用 -Exlive 人员定位客户端(BlackBerry 10, Android, iPhone)
- UVA 10131 Is Bigger Smarter?
- error C2018: unknown character '0xa1'
- android 自定义toggle Button按钮
- C++经典程序100例【9】
- MySql服务器参数