代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
备份新浪微博
作者:
大空易
/ 发布于
2013/5/28
/
1038
基于weibo4j的微博备份工具,导出格式为csv,包括评论和转发内容
package com.zs.test.main; import java.io.FileOutputStream; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import com.zs.test.model.Weibo; import weibo4j.Comments; import weibo4j.Timeline; import weibo4j.model.Comment; import weibo4j.model.CommentWapper; import weibo4j.model.Paging; import weibo4j.model.Status; /** * * @author mengjie * @param args */ public class Weibomain { public static void main(String[] args) { //String access_token = "*********************";//super接口测试 自己申请 Timeline tm = new Timeline();// 获取微博 tm.client.setToken(access_token); Comments cm = new Comments();// 获取评论 cm.client.setToken(access_token); int count = 20;// 每页的条数 List<Weibo> sina = new ArrayList<Weibo>(); try { long s1 = tm.getUserTimelineByName(name).getTotalNumber(); // 获取微博总数 Paging page = new Paging(); //分页 page.setCount(count); int p = (int) (s1 / count + 1);// 总页数 //遍历 for (int i = 1; i <= p; i++) { page.setPage(i); List<Status> list = tm.getUserTimelineByName(name, page, 0, 0) .getStatuses(); for (Status s : list) { Weibo wb=new Weibo(); wb.setUsername(name); // System.out.println(s); DateFormat format = new SimpleDateFormat( "yyyy-MM-dd HH:MM:SS"); String str = format.format(s.getCreatedAt()); // 获取微博创建时间 if (s.getRetweetedStatus() != null&& s.getRetweetedStatus().getCreatedAt() != null) { wb.setZhuanfaCreAt(format.format(s.getRetweetedStatus().getCreatedAt()));//1.转发内容创建时间 wb.setIszhuanfa("转发");//2.是否转发 wb.setText(s.getText());//3.如果是转发,此为转发理由 wb.setZhuanfaText(s.getRetweetedStatus().getUser().getScreenName()+":"+s.getRetweetedStatus().getText());//转发的内容 System.out.println("此条为转发:" + s.getRetweetedStatus().getText() + " 创建时间:" + format.format(s.getRetweetedStatus() .getCreatedAt())); // } else if (s.getRetweetedStatus() == null) { wb.setZhuanfaCreAt("null");//1.转发内容创建时间 wb.setIszhuanfa("原创"); wb.setZhuanfaText("null"); wb.setText(s.getText());//4.原创微博内容 System.out.println("内容:" + s.getText()); }; if (s.getCommentsCount() != 0) { String pl = "";//评论列表用一个字段来表示 System.out.println("********评论列表******"); String id = s.getId(); CommentWapper li = cm.getCommentById(id); for (Comment c : li.getComments()) { pl=pl+c.getUser().getScreenName()+":"+c.getText()+" 发布于:"+format.format(c.getCreatedAt())+" "; //System.out.println(c.getUser().getScreenName()+":"+c.getText()+" 发布于:"+format.format(c.getCreatedAt())); } wb.setComment(pl);//5.评论内容 System.out.println("**********************"); }else{ wb.setComment("null"); } System.out.print("发布时间:" + str); wb.setCreatAt(str);//6.创建时间 System.out.println("通过:" + s.getSource().getName()); wb.setByequip(s.getSource().getName());//7.发布设备 sina.add(wb); } } export(sina);//执行导出 System.out.println("the task has completed!"); } catch (Exception e) { //export(sina);//执行导出 System.out.println("bug!"); } } public static void export(List<Weibo> list) { if (list != null) { //for (Weibo e : list) { // 从获取将要写入csv文件的结果集 // 预组装csv文件内容标题行 String[][] data = new String[list.size()+1][8]; data[0][0] = "用户名"; data[0][1] = "微博内容"; data[0][2] = "是否转发"; data[0][3] = "转发内容"; data[0][4] = "转发内容创建时间"; data[0][5] = "评论列表"; data[0][6] = "发布时间"; data[0][7] = "发送设备"; // 预组装csv文件内容 int len = list.size(); for (int i = 0; i < len; i++) { data[i + 1][0] = list.get(i).getUsername(); data[i + 1][1] = list.get(i).getText(); data[i + 1][2] = list.get(i).getIszhuanfa(); data[i + 1][3] = list.get(i).getZhuanfaText(); data[i + 1][4] = list.get(i).getZhuanfaCreAt(); data[i + 1][5] = list.get(i).getComment(); data[i + 1][6] = list.get(i).getCreatAt(); data[i + 1][7] = list.get(i).getByequip(); } csv_writer("c:/weibo.csv", data); //} } } public static void csv_writer(String path, String[][] data) { try { FileOutputStream fw = new FileOutputStream(path); String str = ""; for (int i = 0 ; i < data.length; i ++) { for (int j = 0 ; j < data[i].length; j++) { if(j == data[i].length - 1){ str += data[i][j] + "\r\n"; }else{ str += data[i][j] + ","; } } } fw.write(str.getBytes()); fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
试试其它关键字
备份新浪微博
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
大空易
贡献的其它代码
(
1
)
.
备份新浪微博
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3