当前位置: 首页 > news >正文

利用新浪微博API的Search接口做微博锐推榜

郑昀 20100929

 

应用入口:http://t.rtmeme.com/

简单介绍下我们这个榜单与新浪自己的热门转发榜区别:

微博锐推榜 将无视明星推名人推,更关注草根推,更关注社会民生推,屏蔽无营养推。

微博锐推榜 将聚合以新浪微博为首的国内各大微博网站的热门转发消息。

 

微博锐推榜

 

1、新浪的接口

新浪微博的API提供了Search方法,如它的文档所示:

URL:
http://api.t.sina.com.cn/search.json
格式:
仅支持json 
GET
是否需要登录:
true
请求数限制:
true
请求参数:
page: 选填参数,页码(从1开始, 默认1)
rpp:选填参数,每页返回的微博数,默认返回10条,最大200

虽然它称“需要登录”,但实际上只要传入AppKey即可,无需登录,无需OAuth,当然不排除以后新浪强制要求都OAuth登录,不过Twitter至今也没对Search接口做如此要求。

 

 

2、只抓转贴

我们只需要新浪微博里的转贴记录。

 

计算新浪微博锐推榜,与Twitter锐推榜相同之处:

  • 都是只针对原帖正文做信息指纹提取;
  • 上榜时只保留原帖内容和作者。

 

与Twitter锐推榜不同之处在于:

  • 不需要保存所有转发者的转发文字(因为多半都是类似于“转发微博”这样的废话,没有必要大量存储),只需保存这些人的个人信息即可,如头像、ScreenName、Location等。
  • 重要的是,知道最近几小时内有多少人转发即可,当要计算某条消息是否可以上榜时,将更进一步获取它的转发数和评论数。因为很古老的消息也会再次掀起转发高潮,所以鉴别原始消息发布时间很重要。
  • 保存原消息缩略图、大图等多媒体信息。

 

3、榜单计算办法

默认存储的都是原始消息的数据(正文、作者、头像、缩略图、信息指纹),扫描到的转发者仅记录名称、头像、id。

定时统计最近4小时内信息指纹出现次数,如果次数足够多,比如5次,那么尝试获取(先数据库,后API)原始消息的转发数和评论数,如果转发数足够大,如大于40次,评论数又小于转发数,则准备上榜,做上榜前最后机器审核。

 

为了保持榜单的高质量,必须制定以下规则:

1、屏蔽某些原作者和转贴者的ID;

2、屏蔽某些关键词;

3、重点阻止娱乐界明星上推;

4、要求消息正文提取的标签数必须大于2,以此阻止无营养或过短的消息上榜;

5、屏蔽并尽可能识别那些刷屏聊天的,比如忽略那些转发者和原作者是同一个人的;

6、重点屏蔽星座推、生日推、节日推、找人推;

7、转发的原帖发布时间必须是最近N小时内的,防止老推翻新;

8、屏蔽某些垃圾信息源,比如:书签、分享、56.com、优酷、土豆网、关联博客等等;

9、屏蔽那些职业转贴人,比如XX语录,XX冷笑话等等。

10、原始消息中“@”“#”等字符过多,也必须屏蔽;

 

4、表结构

原始资讯都存储在 MongoDB 。榜单则存储在 MySql ,方便Web访问。

 

5、频率

由于新浪微博对Search接口的轮询频率有要求,比如每小时1000次,所以我们要尽量避免轮询过快。

统计上榜消息时,会调用新浪微博API的counts接口,也要注意调用频率。

 

微博锐推榜应用网址:

http://t.rtmeme.com/

[完]

相关文章:

  • java中的多线程你只要看这一篇就够了
  • 查看Linux版本信息
  • Android 插件化原理-好文收集(陆续中。。。)
  • C#6.0 十大常用特性
  • 无向图的最短路径算法JAVA实现
  • 火掌柜iOS端基于CocoaPods的组件二进制化实践
  • 【深夜急报,Win10下的Linux子系统之Bash】
  • Mongodb简介及安装部署配置
  • Xargs用法详解
  • 我从编程教室毕业
  • 回归树|GBDT|Gradient Boosting|Gradient Boosting Classifier
  • Hack其实是一门好语言
  • 少走弯路,给Java 1~5 年程序员的建议
  • 如何让你的网站用discuz插件变的有力量
  • 图像搜索技术发展应知道
  • 230. Kth Smallest Element in a BST
  • Cookie 在前端中的实践
  • docker python 配置
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • js中forEach回调同异步问题
  • Just for fun——迅速写完快速排序
  • Laravel Telescope:优雅的应用调试工具
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • ng6--错误信息小结(持续更新)
  • React 快速上手 - 07 前端路由 react-router
  • Swoft 源码剖析 - 代码自动更新机制
  • Vim 折腾记
  • 阿里云购买磁盘后挂载
  • 闭包,sync使用细节
  • 从0到1:PostCSS 插件开发最佳实践
  • 从零开始学习部署
  • 从零开始在ubuntu上搭建node开发环境
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 给初学者:JavaScript 中数组操作注意点
  • 聊聊flink的TableFactory
  • 微信小程序开发问题汇总
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 最近的计划
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #pragma data_seg 共享数据区(转)
  • (c语言)strcpy函数用法
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (python)数据结构---字典
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (原)Matlab的svmtrain和svmclassify
  • .net 4.0发布后不能正常显示图片问题
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 发展历程
  • .NET 反射的使用