最初产生这个项目的想法应该是在2018年10月份,当时正在学习python中,就萌生了这样一个想法:从一个用户这一年发布的微博数据中,提取最有意义的top50个关键词。很明显涉及到了数据采集和自然语言处理的一些知识。前期准备:需要到微博开发平台认证开发者;在微博开发平台创建应用;域名1个,服务器1台;微博应用创建和审核创建应用的目的就是你的网站可以接入微博,使用微博登录授权,调用微博开放的一些api;质量高,用户多的应用还会被推荐到微博应用广场等等。创建应用需要我们填写一些信息,应用名称,描述之类的。把准备好的文案直接粘贴进去就可以;需要不同规格的应用图标和三张以上应用介绍的宣传图。这个里面有一个关键点就是应用地址,需要提供一个可访问到的,并且包含微博组件的一个地址。这些东西提交完就可以提交审核了,微博应用审核的速度还算比较快的,一两天基本差不多会审核完。等应用审核完,你就可以拿着appkey和appsecret继续往下开发了。微博数据采集因为微博开放的api接口里并不提供用户微博数据,所以才使用了数据采集的方案。第一个版本的工具是用nodejs写的,后来换成了python的版本。提取关键词这里还是使用python进行处理:预处理(去掉微博里的表情、标签等);分词(将整句分割为词汇);加载词库(包括通用词库和用户自定义词库);去停用词(去除一些无意义的词汇);计算TFIDF,按权重排序;取前50个词生成词云图片。串联项目项目的基础架构使用nodejs搭建,整个应用的路由访问控制,视图渲染,异常处理, 日志收集,进程管理,都是使用nodejs来完成。大致流程:用户访问应用;引导用户到微博授权页;授权成功后,后台拿到uid,开启一个新的子进程进行微博词云图片的生成;这个时候给用户返回一个grant页面(此时微博词云的进程可能还没结束);用户点击到下一个页面,如果图片已经生成了,就展示该展示的数据,如果还没有,就给用户等待的处理。对,基本流程差不多就这些,比较简单。下面看下最终的效果。重要的知识点在nodejs中调用python脚本,大致思路就是生成一个shell命令,然后nodejs开启一个子进程,在子进程中执行这个shell即可。h5页面,长按保存成图片,这里的大致思路如下:我们将html转为canvas,然后取出canvas数据放入一个img标签里。将这个img放到页面最顶层,并且将不透明度设为0就可以了。然后在微信、微博等app里面,长按就可以保存到手机了,具体实现代码请看下图。总结更多的是一些交互上的细化处理,让用户有更好的操作体验,和视觉上的冲击。这个应用视觉冲击倒是没有多少,哈哈。最后,欢迎大家一起交流。项目地址:http://yk.mcust.cn/wb