小生初入C#领域,因为学校部门里面在办新浪微博活动的时候,需要统计转发数量。(个别团或者班级会去买转发数量,这没节操的),所以有的时候统计起来的时候,会比较麻烦。于是就产生了想利用新浪的API制作一个能统计微博转发数量的工具,因为学校里面微博的转发量不会很大,而且新浪上面的的应用又要钱。。。。具体就是把转发过微博的昵称记录下来,存到Excel文件当中,再对Excel文件里的名称那一列进行排序,去掉重复的。为了加深理解和记录下编程中遇到的问题,所以就写了这个随笔。

1.去新浪开放平台申请一个应用(当然这个应用是不需要提交到新浪那边审核的,因为我只是自己使用而已)

2.申请完毕后,可以在应用信息那边得到App Key、App Secret、Access Token(这个可以通过调用OAuth)的方法得到。

3.写程序

4.测试使用

新建项目什么的就不说了,我用的是VS2012,新建了个WPF的项目,因为对WPF的效果还是蛮看好的。代码部分我上网找了一些例子看的。

//其他的using就不贴了
using NetDimension.Weibo;//获得AcessToken的方法
//因为我的AppKey和AppSecrect都存在了Settings.settings里面
OAuth o = new OAuth(Properties.Settings.Default.AppKey, Properties.Settings.Default.AppSecrect);           string username = this.txtUserName.Text;string userpwd = this.txtUserPwd.Password;try{          //使用账户登录(指的是申请应用使用到的帐号,或者可以自己设置15个测试帐号(在未经过新浪审核的条件下,只能设置15个测试帐号))if (o.ClientLogin(username, userpwd)){AccessToken accessToken = o.GetAccessTokenByPassword(username, userpwd); //请注意这里返回的是AccessToken对象,不是string
                }}catch (WeiboException ex){MessageBox.Show(ex.Message);}return o;

接下来是在统计转发数量遇到的问题。

新浪API里面有个接口statuses/querymid和statuses/queryid 分别是通过mid和id获取对方的值。

因为在单条微博的地址栏里面,只能得到mid,就是类似A3Bhu9rW6的东西,所以我调用了statuses/querymid接口,然后调用statuses/show接口显示这条微博的信息。

string[] MIDlist = this.txtIDlist.Text.Split(',');foreach (string msgid in MIDlist){try{string id = _sina.API.Entity.Statuses.QueryID(1, false, true, msgid);var _msgInfo = _sina.API.Entity.Statuses.Show(id);string meg = " The message ID:" + id + "\n reposts_count:" + _msgInfo.RepostsCount + "\n";RText(meg);}catch{MessageBox.Show("这ID有问题吧。。。。");}}

到这里其实都没什么问题,早上在测试转发数量大于50条的微博的时候,出现了一个问题。

statuses/repost_timeline接口可以得到转发数量的详细json信息,官方的解释,这个接口只能获取最新的2000条记录,数据的结构有点让我凌乱,昨天解析这个数据的时候,多谢@dudu大神的指导,使用Json.NET并通过下面的代码提取转发人的名称。

var jObject = JObject.Parse(jsonStr);Console.WriteLine(jObject["reposts"][0]["user"]);

statuses/repost_timeline接口默认每一页是50条数据,我实际测起来是这样,而不是官方文档里面说的20条。一旦大于50条的数据,就要通过接口里面的page属性,翻页查询。

foreach (string msgid in MIDlist){try{string id = _sina.API.Entity.Statuses.QueryID(1, false, true, msgid);int x = _sina.API.Entity.Statuses.RepostTimeline(id).TotalNumber;string[] Rname = new string[x];sb.Append("\n Reposts Count:" + x);sb.Append("\n The message ID:" + id);//Statuses.RepostTimeline接口默认读取50条数据//如果数据大于50条,则进行分批读取                    int m=0;if (x > 50){for (int i = 1; i < x / 50 + 1; i++){var _msgInfo = _sina.API.Entity.Statuses.RepostTimeline(id, "0", "0", 50, i, 0);//IEnumerable<Entity> collection=_msgInfo.Statuses;//collection.Count();var jObject = JObject.Parse(_msgInfo.ToString());for (int n = 0; n < _msgInfo.Statuses.Count(); n++){sb.Append("\n Reposts User:" + jObject["reposts"][n]["user"]["name"]);Rname[m] = jObject["reposts"][n]["user"]["name"].ToString();m++;}sb.Append("\n--------------");}}else{var _msgInfos = _sina.API.Entity.Statuses.RepostTimeline(id);var jObjects = JObject.Parse(_msgInfos.ToString());for (int n = 0; n < _msgInfos.Statuses.Count(); n++){sb.Append("\n Reposts User:" + jObjects["reposts"][n]["user"]["name"]);Rname[m] = jObjects["reposts"][n]["user"]["name"].ToString();m++;}sb.Append("\n--------------");}RText(sb.ToString());_t.Create_Excel(Rname, x);             }
      catch (WeiboException ex){MessageBox.Show(ex.Message);}

当时一直在纠结怎么取出每次读取的数据实际的数量,因为在最后一页当中,不可能都是50条数据,有可能是40、30等等。后来才发现_msgInfo.Statuses.Count()这句代码就可以直接得到数量。。。。

这些就是目前遇到的问题,下一步,想研究下大于2000条的数据要怎么取出来的,然后再加个抽奖的小功能。

PS:小生希望有大神看到这个随笔的时候,能给与一些指导哈,我知道我的代码有一些不规范,而且初次调用这些接口,处理方式肯定有一些不对的地方!

转载于:https://www.cnblogs.com/Manofthecursed/p/3247876.html

学习使用新浪接口随笔(一)相关推荐

  1. php查询ip归属地api接口_php调用新浪接口查询ip获取地理位置(ip归属地查询)

    php调用新浪接口查询ip获取地理位置(ip归属地查询) 发布于 2014-11-17 08:35:58 | 115 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: ...

  2. python美国股票数据api_【美股量化00篇】Python获取新浪接口美股实时数据

    1.本篇以BABA(阿里巴巴)为例,在浏览器地址栏输入以下url,即可获取个股数据:阿里巴巴(BABA)实时数据​hq.sinajs.cn import requests url = 'http:// ...

  3. python爬取股票实时价格_【美股量化00篇】Python获取新浪接口美股实时数据

    1.本篇以BABA(阿里巴巴)为例,在浏览器地址栏输入以下url,即可获取个股数据: http://hq.sinajs.cn/list=gb_baba (股票代码必须为小写字母,结果如下图所示) 阿里 ...

  4. Linux学习_Sinno_Song_新浪博客

    下载与制作安装盘 学习使用的发行版为Ubuntu18.04.1.首先在Ubuntu网站上下载镜像文件.点击这里下载桌面版Ubuntu.下载完成后,使用U盘制作安装盘,这里可以查看如何使用工具进行制作. ...

  5. Postman学习_Sinno_Song_新浪博客

    一.安装Postman 点击这里访问Postman下载本地版Postman.Postman还有Chrome的插件版本,目前已经不在更新.Postman支持Mac,Windows,Linux,选择自己所 ...

  6. 调用新浪接口下载实时股票数据

    python通过调用新浪财经接口一次性下载股票的实时数据: #'u1','u2'无用 columnsList=['u1', 'u2', 'code', 'name', 'open', 'frontcl ...

  7. python 股票分析api,2020-04-21 用python3 按周分析新浪接口股票数据(篇一:下载、存储篇)...

    思路概览一:下载存储 股票数据量大,有一定的涨跌模式,为了节约看股时间,今天我们用python3,量化分析有关股票数据. 总体思路:使用通达信获得所有股票代码,然后通过requests 模块下载htt ...

  8. SQL学习_Sinno_Song_新浪博客

    DML(数据操作语言)指查询(Select),更新(Update),删除(Delete),添加(Insert into). DDL(数据定义语言)指创建数据库(Create Database或Aler ...

  9. Linux学习2_Sinno_Song_新浪博客

    Linux中全部都是文件./代表根目录.-代表/home/username. .代表当前目录. 切换用户使用su.操作手册man,查询全部的手册使用man ls.查询man 的手册使用 man man ...

最新文章

  1. Jmeter学习——11
  2. mysql压缩表语句_MYSQL静态表、动态表、压缩表总结
  3. VTK:图片之ImageContinuousDilate3D
  4. html5自动添加数据库,HTML5本地存储之如果没有数据库究竟会怎样
  5. 【2019牛客暑期多校训练营(第一场) - A】Equivalent Prefixes(单调栈,tricks)
  6. 对前后端分离和FastDFS的使用的再理解
  7. DirectX Repair
  8. 程序设计语言基础知识复习
  9. cmd 复制文件夹内容
  10. python:实现希尔密码算法(附完整源码)
  11. 数据可视化大屏真不是个事,这 30 个精美的模板拿走吧
  12. java基础标识符,关键字,常量
  13. 2012中国互联网公司、全球互联网公司最新市值排名(2012.12.06)
  14. java安装 2203_win7系统无法安装java程序提示“内部错误2203”的解决方法
  15. 手机邮箱中的邮件里的链接的打开方式/app更改方法
  16. [book]《岩田先生》
  17. 个人网站页面总结+源码
  18. 【GAT】如何理解Graph Attention Network(注意力机制)?
  19. 安全科普:流量劫持的方式和途径
  20. 改进A星算法+dwa

热门文章

  1. 用计算机计算性别,2018预测生男生女计算器 超准的怀孕计算器查生男生女
  2. 网络基础:计算机网络由基础到深入常用知识集锦!
  3. 硬件:选购CPU和显卡需了解的参数,TDP、SDP、ACP、GCP、TBP是什么?
  4. 数据库的那些事(全是干货)
  5. ux和ui_如何为您的UX / UI设计选择正确的原型制作工具
  6. (字节/华为/美团)前端面经记录冷冷清清的金三银四
  7. 现在学前端还来得及吗?总听人说饱和了
  8. 聊聊storm的PartialKeyGrouping
  9. vue加百度统计代码(亲测有效)
  10. 七牛直播云服务技术揭秘