`
Jelen_123
  • 浏览: 69283 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

关于‘情人节’的微博信息下载

阅读更多
    情人节前一天晚上突然有个想法,想看看这段时间的微博信息的一些数量啊,情感色彩的波动。所以写了个小程序进行微博信息的下载,程序写起来难度不大,可是下载的时候遇到了一点问题,程序一直执行了4个多小时后会因为Timer的溢出了中断,还一直没有把这个问题解决,这样断断续续进行了8个多小时的信息下载,对含有”情人节“这三个关键字的微博进行下载保存。说来惭愧,现在还没有做信息的分析。先把代码贴一下吧~~

这个是从新浪API进行数据下载的类:

package weibo.com.cn.simulate;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import weibo4j.Timeline;
import weibo4j.Users;
import weibo4j.Weibo;
import weibo4j.model.Paging;
import weibo4j.model.Status;
import weibo4j.model.User;
import weibo4j.model.WeiboException;

public class Download {
String access_token;
String uid;
//构造函数
public Download(String token,String uid)
{
this.access_token = token;
this.uid = uid;
Weibo weibo = new Weibo();
weibo.setToken(access_token);
System.out.println(this.access_token);
}
/**
* 下载最新发表的200条微博
* @throws IOException
*/
public void downLoadPublic(String filename) throws IOException
{
List<Status> status = new ArrayList<Status>();
Status statu = new Status();
Timeline tl = new Timeline();
FileWriter fw = new FileWriter("H:\\Study\\中文信息处理\\微博\\新浪API\\weibo4j-oauth2\\data\\情人节\\"+filename);
BufferedWriter br = new BufferedWriter(fw);
try
{
status = tl.getPublicTimeline(200,0);           //获取最新发布的200条微博
} catch (WeiboException e)
{
e.printStackTrace();
}
for(int k= 0; k < status.size(); k++) //循环读取微博信息
{
statu = status.get(k);   //获取微博信息
if(statu.getText().contains("情人节"))      //筛选出描述“元宵”的微博
{
System.out.println(statu.getText());
br.write((k+1)+"-----"+statu.getText());
br.write(13);
br.write(10);
}
}
br.flush();
br.close();
}
}

下面是按时间计划进行执行控制下载,每隔30秒执行一次下载并保存
package weibo.com.cn.simulate;

import java.awt.Toolkit;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;

public class TimeTest {

String token = "2.00DdJ8lBpRRC5E61b6154031uUs_dD";   //自己获取
String uid = "1736894325";
Toolkit toolkit;  //声音响应
Timer timer;
Download download = new Download(token, uid);
int n ;

class ReminderTask extends TimerTask
{
int number = 2800;      //执行一天,每秒执行一次,执行一天的总次数,自己计算
public void run()
{
n = 2801 - number;
System.out.println("开始执行第"+n+"次");
try
{
String filename = "data_"+n+".txt";       //文件名
download.downLoadPublic(filename);       //执行下载
} catch (IOException e)
{
e.printStackTrace();
}
toolkit.beep();                                       //执行完一次以声音响应
System.out.println("执行完第"+n+"次");
number--;
//timer.cancel();
if(number<1)
System.exit(0);
}
}

/**
* 执行时间间隔的设定
* @param seconds
*/
public void Reminder(int seconds)
{
toolkit  = Toolkit.getDefaultToolkit();          
timer = new Timer();
timer.schedule(new ReminderTask(), 0,seconds*1000);  //执行计划
}

public static void main(String args[])
{
TimeTest tt  = new TimeTest();
System.out.println("每30秒执行一次");
tt.Reminder(30);       //每30秒执行一次
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics