作者 主题: 基于[Processing]的[新浪微博]数据可视化教程  (阅读 20929 次)

vinjn

  • SuperManager
  • Hero Member
  • *****
  • 帖子: 586
基于[Processing]的[新浪微博]数据可视化教程
« 于: 十二月 20, 2011, 05:09:41 下午 »
思路分析
1.获取新浪微博的数据
2.分析数据,提取有用信息
3.显示数据
4.与数据的互动
5.html5版本

这个教程将按照这四点来讲述
并且由于processing的优点,我们既可以得到pc版的可执行程序,也能得到运行在浏览器中的html5页面。
« 最后编辑时间: 十二月 20, 2011, 05:46:20 下午 作者 vinjn »

vinjn

  • SuperManager
  • Hero Member
  • *****
  • 帖子: 586
Re: 基于[Processing]的[新浪微博]内容可视化
« 回复 #1 于: 十二月 20, 2011, 05:38:28 下午 »
一。获取新浪微博数据

首先,你要成为新浪微博的开发者
http://open.weibo.com/wiki/新手指南

引用
应用信息保存成功后,将会获得该应用的App Key和Secret Key,您可以通过这两个Key数据开始进行相关的技术开发工作。
App Key是应用的唯一标识,开放平台通过App Key来鉴别应用的身份。 AppSecret是给应用分配的密钥,开发者需要妥善保存这个密钥,这个密钥用来保证应用来源的的可靠性,防止被伪造。

App Key是processing需要用到的,下面的演示代码以我的appkey为例,即3709681010。
我们来写第一段代码

程序代码
String query = "processing";//需要查询的关键词
String app_key = "3709681010";//这是vinjn自己申请的app_key,请勿滥用
String url = "http://api.t.sina.com.cn/statuses/search.xml?source="+app_key+"&q="+query;//新浪微博的查询接口
String[] result = loadStrings(url);//loadStrings不仅能读取本地文本,也能读取网络上的url
println(result);//显示返回的xml文件中的内容
saveStrings("weibo.xml",result);//写入到weibo.xml中

每行都加了注释,唯一的难点在url这行,更多新浪微博的api请查询官方文档
http://open.weibo.com/wiki/API%E6%96%87%E6%A1%A3
我这里用的是旧版的api,因为新版只支持json,不支持xml格式,而processing要分析json需要额外的库。

这个代码中读取的url其实就是
http://api.t.sina.com.cn/statuses/search.xml?source=3709681010&q=processing
你可以用浏览器直接访问,得到的结果与weibo.xml中的是一样的。

最后演示用一行代码实现上述功能
程序代码
saveStrings("weibo.xml",loadStrings("http://api.t.sina.com.cn/statuses/search.xml?source=3709681010&q=processing"));

这次要用到的新浪微博的api其实就这一句,之后的都是纯processing的事情了。

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: 基于[Processing]的[新浪微博]数据可视化教程
« 回复 #2 于: 十二月 28, 2011, 11:14:37 下午 »
俺申请了一个key,用同样的办法去读http://open.weibo.com/wiki/Users/show

貌似有问题阿。

程序代码
String url = "http://api.t.sina.com.cn/users/show/11051.xml?source=1594162296";
String[] result = loadStrings(url);
println(result);

到浏览器里转到的话,报错403,vinjn知道咋解决不?

vinjn

  • SuperManager
  • Hero Member
  • *****
  • 帖子: 586
Re: 基于[Processing]的[新浪微博]数据可视化教程
« 回复 #3 于: 十二月 28, 2011, 11:50:01 下午 »
应该是不能使用loadStrings来实现。
需要伪装http请求,让服务器认为这是来自一个已知的浏览器的请求。

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: 基于[Processing]的[新浪微博]数据可视化教程
« 回复 #4 于: 十二月 29, 2011, 05:29:21 下午 »
So......具体如何操作 ::)

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: 基于[Processing]的[新浪微博]数据可视化教程
« 回复 #5 于: 十二月 29, 2011, 05:31:22 下午 »
俺是想尝试读取weibo 用户的缩略头像,用到dec27a_2011 上。


wonderlabs

  • Newbie
  • *
  • 帖子: 7
  • Wonderlabs
    • Wonderlabs
Re: 基于[Processing]的[新浪微博]数据可视化教程
« 回复 #7 于: 三月 07, 2012, 09:28:37 上午 »
我是在OPENFRAMEWORKS用HTTPRESPONSE写的,虽然能读取成功,但比较奇怪的问题是,每次返回只能范围最前面20个好友,加了CURSOR标签无效果。但同样语句在浏览器中就可以执行。

ofLoadURLAsync("http://api.t.sina.com.cn/statuses/followers/Wonderlabs_Dong.xml?source=750360788&cursor=10&count=5","load");

Contra

  • SuperManager
  • Sr. Member
  • *****
  • 帖子: 347
  • AC, game dev, new media art&tech.
    • i'm Contra
Re: 基于[Processing]的[新浪微博]数据可视化教程
« 回复 #8 于: 三月 13, 2012, 11:37:29 下午 »
So......具体如何操作 ::)
刚好用到,转一个解决方案:

you have to make Google believe you are a real Web browser as it avoids being bugged by stupid bots.

程序代码
String QUERY = "http://www.google.de/search?q=Processing";

void setup()
{
  String[] results = null;
  try
  {
    URL url= new URL(QUERY);
    URLConnection connection = url.openConnection();
    // Google rejects pure API requests, so we change the header of the request
    // to make it believe it is requested by a real browser... :)
    connection.setRequestProperty("User-Agent",
  "I am a real browser like Mozilla or MSIE" );
    results = loadStrings(connection.getInputStream()); 
  }
  catch (Exception e) // MalformedURL, IO
  {
    e.printStackTrace();
  }

  if (results != null)
  {
    println(results[2]);
  }
}

原文地址 http://processing.org/discourse/yabb2/YaBB.pl?num=1263989874

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: 基于[Processing]的[新浪微博]数据可视化教程
« 回复 #9 于: 三月 18, 2012, 08:36:30 下午 »
这个问题俺已经解决了的说, 不过还是感谢罗爷. lol

sbilly

  • Newbie
  • *
  • 帖子: 2
Re: 基于[Processing]的[新浪微博]数据可视化教程
« 回复 #10 于: 三月 19, 2012, 02:37:12 下午 »
嗯,回头我也来照着学习看看。


zkyscraper

  • Newbie
  • *
  • 帖子: 13
Re: 基于[Processing]的[新浪微博]数据可视化教程
« 回复 #11 于: 五月 12, 2013, 09:27:44 上午 »

kennyma1991

  • Newbie
  • *
  • 帖子: 9
Re: 基于[Processing]的[新浪微博]数据可视化教程
« 回复 #12 于: 七月 22, 2013, 04:33:24 下午 »
so cool.

我之前基于官方的范例php写过一个小小的在线app.

不知道两年了,端口有没有改变