获取到了原始数据以后,下一步就是清洗入库。html
由于是简单分析,因此只获取话题
、用户
、消息
三块内容。具体以下:python
class Pins(object): """ 沸点 """ msg_id = None # 沸点ID topic_id = None # 话题ID topic_title = None # 话题名称 user_id = None # 用户ID user_name = None # 用户名 msg_content = None # 沸点内容 msg_ctime = None # 沸点建立时间 msg_digg_count = 0 # 沸点点赞数 msg_comment_count = 0 # 沸点评论数 def __repr__(self): return '<Pins: %s>' % self.msg_id
数据库的话,使用MySQL。由于沸点内容msg_content
中含有emoji
表情,因此在建表时字符集编码须要使用utf8mb4
。mysql
建表SQL语句以下:git
CREATE SCHEMA `juejin` DEFAULT CHARACTER SET utf8mb4 ; CREATE TABLE `juejin`.`pins` ( `msg_id` VARCHAR(20) NOT NULL COMMENT '消息ID', `topic_id` VARCHAR(20) NOT NULL COMMENT '主题ID', `topic_title` VARCHAR(16) NOT NULL COMMENT '主题名称', `user_id` VARCHAR(20) NOT NULL COMMENT '用户ID', `user_name` VARCHAR(32) NOT NULL COMMENT '用户昵称', `msg_content` TEXT CHARACTER SET 'utf8mb4' NOT NULL COMMENT '消息内容', `msg_ctime` VARCHAR(16) NOT NULL COMMENT '消息建立时间戳', `msg_digg_count` INT(11) NOT NULL COMMENT '消息点赞数', `msg_comment_count` INT(11) NOT NULL COMMENT '消息评论数', `msg_createdate` DATETIME NOT NULL DEFAULT now() COMMENT '消息建立时间(同msg_ctime时间戳)', PRIMARY KEY (`msg_id`));
接上文,咱们已经将全部沸点数据保存至json_data
文件夹下。只须要将该文件下全部的json文件遍历读取出来,在作简单的处理,而后存入数据库便可。github
示例代码以下:web
def read_all_data(): """ 遍历读取全部json数据,而后入库 :return: """ pins_list = [] for dirpath, dirnames, filenames in os.walk('./json_data'): filenames = sorted(filenames, key=lambda _: _[5: 9]) for filename in filenames: filename = os.path.join('./json_data', filename) print(filename) with open(filename, 'r') as pins_file: items_data = json.loads(''.join(pins_file.readlines()))['data'] for item in items_data: pins = Pins().parse_from_item(item) pins_list.append(pins) insert_db([pins]) return pins_list
最终,数据库表以下图所示。sql
官方是这样描述的:A modern, enterprise-ready business intelligence web application.
数据库
先说下公司项目使用过程当中的感觉。咱们主要是将配置好的图表以IFrame的形式嵌入到其余页面中,单独作图表的话是比较费时费力的。apache
D3.js
,感受风格有些不符合国内的偏好,好在开源,能够扩展如echarts
等图表。总体来讲,配置和使用仍是比较方便的。毕竟是免费的,不要要求过高。json
根据官方文档,我们使用OS dependencies的方式安装和使用Superset。
根据文档一步步走便可,virtualenv
的使用可参考官方文档。
直接使用pip安装Superset便可,pip install apache-superset
。当前最新版本为0.37.0
。
最后,咱们将官方示例加载如系统,superset load_examples
。而后启动开发服务器便可,`superset run -p 8088 --with-threads --reload --debugger
`。
理论上,咱们打开http://127.0.0.1:8088/superset/dashboard/births/,便可看到以下图所示:
官方文档必定要看,http://superset.apache.org/
在制做图表前,我们须要先制定几个目标,也就是想要从数据中获取什么主题。
咱们就如下面6个主题来制做图表吧。
Superset图表的制做能够由数据库表直接生成。这里我们选择更通用的一种方式,由SQL Lab -> SQL Editor
经过SQL来直接获取目标数据。
格式为SLQAlchemy URI
,使用过Python的同窗对这款ORM确定不会陌生。感兴趣的能够了解一下,官方文档:https://www.sqlalchemy.org/。
首次配置时,会抛出Could not load database driver: mysql
异常。执行pip install mysqlclient
安装mysql驱动便可。
该数据统计时,将没有话题的沸点进行了排除。
不过这前两条沸点有刷赞的嫌疑。
后续考虑对数据进行多维度、深层次的分析。如使用jieba分词
+wordcloud
对沸点内容关键词制做词云等。
可能的话,后台专门跑个服务对沸点数据进行定时抓取和更新,并制做数据大屏进行展现。