前面2篇把大致的开发说的几乎相同了,接下来说说粉丝动态消息列表或时间线数据的抓取与解析显示,我将他所有写在了一个

类里。并以封装类对象的形式存储数据。以下看看基本的服务代码:



粉丝动态消息列表数据抓取:

package com.neweriweibo.service;
/**
* 用户消息列表
* @author Engineer-Jsp
* @date 2014.10.29
* */
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList; import org.json.JSONArray;
import org.json.JSONObject; import com.neweriweibo.model.UserWeibo;
import com.neweriweibo.utils.TencentAPI; import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.util.Log;
public class WeiBoService extends Service { private ArrayList<UserWeibo> data ;
private String access_token;
private String openid;
private String openkey;
private String getURL;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
data = new ArrayList<UserWeibo>() ;
// 首选项取数据
access_token = PreferenceManager.getDefaultSharedPreferences(this).getString("access_token", "access_token");
openid = PreferenceManager.getDefaultSharedPreferences(this).getString("openid", "openid");
openkey = PreferenceManager.getDefaultSharedPreferences(this).getString("openkey", "openkey");
// 拼接地址,赋值变量
StringBuffer buff = new StringBuffer(TencentAPI.userWeiBo) ;
buff.append("? ").append("format=json").append("&pageflag=0")
.append("&reqnum=5").append("&lastid=0").append("&type=3")
.append("&contenttype=0x80").append("&oauth_consumer_key="+TencentAPI.client_id)
.append("&access_token="+access_token)
.append("&openid="+openid)
.append("&clientip=CLIENTIP")
.append("&oauth_version=2.a&scope=all");
getURL = buff.toString();
Log.d("获取微博消息列表地址:", getURL);
new Thread(new Runnable() {
@Override
public void run() {
/*
* http://open.t.qq.com/api/statuses/broadcast_timeline
* ?format=json
* &pageflag=0
* &pagetime=0
* &reqnum=5
* &lastid=0
* &type=3
* &contenttype=0x80
* &oauth_consumer_key=801506473
* &access_token=789a7d5284d0c3e608f8e384c993d04b
* &openid=0027BC08DB5B45D7461E9A0F16F527E7
* &clientip=CLIENTIP
* &oauth_version=2.a&scope=all
*
*
*/
try {
getData(getURL) ;
} catch (Exception e) {
e.printStackTrace();
}
} }).start() ;
}
public void getData(String path)throws Exception{ UserWeibo userweibo = null ;
URL _url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) _url.openConnection();
conn.setConnectTimeout(8000);
conn.setReadTimeout(8000);
conn.setDoOutput(false);
conn.setRequestMethod("GET"); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream in = conn.getInputStream();
InputStreamReader reader = new InputStreamReader(in, "utf-8");
BufferedReader buffere = new BufferedReader(reader);
StringBuilder builder = new StringBuilder();
String line = null;
while (null != (line = buffere.readLine())) {
builder.append(line);
}
String json = builder.toString() ;
JSONObject root = new JSONObject(json).getJSONObject("data") ;
Log.d("获取到的微博消息列表:", root.toString());
String totalnum = root.getString("totalnum") ; //获取条数
JSONArray arrayinfo = root.getJSONArray("info");
Log.d("详细消息内容数据:", arrayinfo.toString());
//获取广播的条数
for(int i=0 ;i<arrayinfo.length() ;i++){ userweibo = new UserWeibo() ;
JSONObject object = arrayinfo.getJSONObject(i) ; String date = object.getString("timestamp") ; //获取一个长整型的时间 :1003323
String from = object.getString("from") ; //获取平台
String location = object.getString("location") ; //获取地址
String name = object.getString("cfloat656805") ; //获取名称
String origtext = object.getString("origtext") ; //获取内容 userweibo.setForm(from) ;
userweibo.setLocation(location) ;
userweibo.setOrigtext(origtext) ;
}
}
}
@Override
public void onDestroy() {
super.onDestroy();
} }



UserWeiBO:

package com.neweriweibo.model;

import android.os.Parcel;
import android.os.Parcelable; /**
* 用户个人的微博
* @author Engineer-Jsp
* @date 2014.10.28
*
*/
public class UserWeibo implements Parcelable{ private String form ; //从哪里发送的消息
private String location ; // 地址
private String name ; //名字
private String origtext ; //发送微博的信息
private String timestamp ; // 发表的时间
private String number ; // 广播的条数 public UserWeibo() {
super();
// TODO Auto-generated constructor stub
}
public UserWeibo(String form, String location, String name,
String origtext, String timestamp,String number ) {
super();
this.form = form;
this.location = location;
this.name = name;
this.origtext = origtext;
this.timestamp = timestamp;
this.number = number ; } public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getForm() {
return form;
}
public void setForm(String form) {
this.form = form;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOrigtext() {
return origtext;
}
public void setOrigtext(String origtext) {
this.origtext = origtext;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
} public static final Parcelable.Creator<UserWeibo> CREATOR = new Parcelable.Creator<UserWeibo>() { @Override
public UserWeibo createFromParcel(Parcel source) {
// TODO Auto-generated method stub
UserWeibo userweibo = new UserWeibo() ;
userweibo.form = source.readString() ;
userweibo.location = source.readString() ;
userweibo.name = source.readString() ;
userweibo.origtext = source.readString() ;
userweibo.timestamp = source.readString() ;
userweibo.number = source.readString() ; return userweibo;
} @Override
public UserWeibo[] newArray(int size) {
// TODO Auto-generated method stub
return new UserWeibo[size];
}
}; @Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub dest.writeString(form);
dest.writeString(location);
dest.writeString(name);
dest.writeString(origtext);
dest.writeString(timestamp);
dest.writeString(number) ; } }

UserWeiBoInfo:

package com.neweriweibo.model;
/**
* 接收个人微博信息
* @author Engineer-Jsp
* @date 2014.10.28
*/
import android.os.Parcel;
import android.os.Parcelable;
public class UserWeiBiInfo implements Parcelable{ private String id ; //微博id
private String name ; //微博人的名字
private String origtext ; //发送的信息
private String headimg;//头像 public String getHeadimg() {
return headimg;
}
public void setHeadimg(String headimg) {
this.headimg = headimg;
}
public UserWeiBiInfo() {
super();
}
public UserWeiBiInfo(String id, String name, String origtext,String headimg) {
super();
this.id = id;
this.name = name;
this.origtext = origtext;
this.headimg = headimg;
} public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOrigtext() {
return origtext;
} public void setOrigtext(String origtext) {
this.origtext = origtext;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) { dest.writeString(id);
dest.writeString(name);
dest.writeString(origtext);
dest.writeString(headimg);
} public static final Parcelable.Creator<UserWeiBiInfo> CREATOR = new Creator<UserWeiBiInfo>() { @Override
public UserWeiBiInfo createFromParcel(Parcel source) {
UserWeiBiInfo userWeiBiInfo = new UserWeiBiInfo() ; userWeiBiInfo.id = source.readString() ;
userWeiBiInfo.name = source.readString() ;
userWeiBiInfo.origtext = source.readString() ;
userWeiBiInfo.headimg = source.readString(); return userWeiBiInfo;
} @Override
public UserWeiBiInfo[] newArray(int size) {
return new UserWeiBiInfo[size];
}
}; @Override
public String toString() {
return "UserWeiBiInfo [帐号=" + id + ", 昵称=" + name + ", 微博消息="
+ origtext + ",头像地址="+headimg+"]";
}
}

界面效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanNwcGluZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">



标题菜单:



转发、赞、评论功能都没有拓展。有兴趣的能够继续做下去,跟着API写就是了,不难~~

Android MaoZhuaWeiBo 好友动态信息列表数据抓取 -3的更多相关文章

  1. [nodejs,expressjs,angularjs2] LOL英雄列表数据抓取及查询显示应用

    新手练习,尝试使用angularjs2 [angularjs2 数据绑定,监听数据变化自动修改相应dom值,非常方便好用,但与传统js(jquery)的使用方法会很不同,Dom操作也不太习惯] 应用效 ...

  2. 网页爬虫--python3.6+selenium+BeautifulSoup实现动态网页的数据抓取,适用于对抓取频率不高的情况

    说在前面: 本文主要介绍如何抓取 页面加载后需要通过JS加载的数据和图片 本文是通过python中的selenium(pyhton包) + chrome(谷歌浏览器) + chromedrive(谷歌 ...

  3. 爬虫---selenium动态网页数据抓取

    动态网页数据抓取 什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页 ...

  4. 大数据抓取采集框架(摘抄至http://blog.jobbole.com/46673/)

    摘抄至http://blog.jobbole.com/46673/ 随着BIG DATA大数据概念逐渐升温,如何搭建一个能够采集海量数据的架构体系摆在大家眼前.如何能够做到所见即所得的无阻拦式采集.如 ...

  5. python爬虫数据抓取方法汇总

    概要:利用python进行web数据抓取方法和实现. 1.python进行网页数据抓取有两种方式:一种是直接依据url链接来拼接使用get方法得到内容,一种是构建post请求改变对应参数来获得web返 ...

  6. 网页数据抓取工具,webscraper 最简单的数据抓取教程,人人都用得上

    Web Scraper 是一款免费的,适用于普通用户(不需要专业 IT 技术的)的爬虫工具,可以方便的通过鼠标和简单配置获取你所想要数据.例如知乎回答列表.微博热门.微博评论.淘宝.天猫.亚马逊等电商 ...

  7. Python爬虫工程师必学——App数据抓取实战 ✌✌

    Python爬虫工程师必学——App数据抓取实战 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统 ...

  8. 吴裕雄--天生自然python学习笔记:WEB数据抓取与分析

    Web 数据抓取技术具有非常巨大的应用需求及价值, 用 Python 在网页上收集数据,不仅抓取数据的操作简单, 而且其数据分析功能也十分强大. 通过 Python 的时lib 组件中的 urlpar ...

  9. Phantomjs+Nodejs+Mysql数据抓取(1.数据抓取)

    概要: 这篇博文主要讲一下如何使用Phantomjs进行数据抓取,这里面抓的网站是太平洋电脑网估价的内容.主要是对电脑笔记本以及他们的属性进行抓取,然后在使用nodejs进行下载图片和插入数据库操作. ...

随机推荐

  1. STM32的串口DMA收发以及双缓冲区的实现

    在使用STM32的UART的DMA功能总结如下: 首先上代码,这里采用STM32 的USART1作为Demo,RX的DMA为DMA1_Channel5,TX的DMA为DMA1_Channel4.初始化 ...

  2. 前k大金币(动态规划,递推)

    /* ///题解写的很认真,如果您觉得还行的话可以顶一下或者评论一下吗? 思路: 这题复杂在要取前k大的结果,如果只是取最大情况下的金币和,直接 动态规划递归就可以,可是前k大并不能找出什么公式,所以 ...

  3. 反片语(Ananagrams,Uva 156)

    输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文 本中的另外一个单词.在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中 的大小写,按字典序进行排列(所有大写字母 ...

  4. linux(Ubuntu16)下切换python2和python3(转)

    采用update-alternatives 切换版本 1.打开终端:Ctrl+Alt+T 2.查看update-alternatives的帮助信息:update-alternatives --help ...

  5. python爬虫23 | 手机,这次要让你上来自己动了。这就是 Appium+Python 的牛x之处

    你有没有想过让你的手机帮你自动完成某些事情 比如自动帮你抢红包 有些软件不是有签到活动么 这些傻瓜式的操作 能不能让手机自动签到呢? 自动帮你叫外卖 自动帮你打电话 等等 还有 对于手机上的一些比较难 ...

  6. nginx4win10 文件下载服务器

    默认root是Nginx下目录html. 我们在其目录下新建download目录,然后在该目录下copy几个供下载的文件. 在浏览器输入http://localhost:9001/download/y ...

  7. js eslint语法规范错误提示代码

    最近在用eslint代码检测,因为之前不太注意代码规范,刚开始确实头疼,哈哈,不过用习惯了就会感觉还不错,其实也没有那样难调试 我看过之前有些人已经做过总结,自己记录下,方便自己以后查找 “Missi ...

  8. 【Codeforces 924C】Riverside Curio

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 设第i天总共的线数为t[i] 水平线上线数为m[i]是固定的 水平线下的线数设为d[i] 则d[i]+m[i]+1=t[i] 也就是说问题可以 ...

  9. 【codeforces 709C】Letters Cyclic Shift

    [题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...

  10. poj——1330 Nearest Common Ancestors

    Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 30082   Accept ...