package Twitter;
import twitter4j.*;
import twitter4j.Twitter;
import twitter4j.conf.ConfigurationBuilder;
import twitter4j.json.DataObjectFactory;
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 TwitterRest {
/**
* 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 TwitterRest pr = new TwitterRest();
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();
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();
}
}
Twitter现在又限制了,只能拿到200个左右的tweets。
如果要全部的,大家可以参考之前的selenium的方法去网页是自己抓。
会很麻烦,不过是有效的。