欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于‘情人节’的微博信息下载 博客分类: 小技术 javaweibo情感 

程序员文章站 2024-03-03 00:00:28
...
    情人节前一天晚上突然有个想法,想看看这段时间的微博信息的一些数量啊,情感色彩的波动。所以写了个小程序进行微博信息的下载,程序写起来难度不大,可是下载的时候遇到了一点问题,程序一直执行了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秒执行一次
}
}
相关标签: java weibo 情感