获取到了原始数据之后,下一步就是清洗入库。
因为是简单分析,所以只获取话题
、用户
、消息
三块内容。具体如下:
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
。
建表SQL语句如下:
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文件遍历读取出来,在做简单的处理,然后存入数据库即可。
示例代码如下:
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
最终,数据库表如下图所示。
官方是这样描述的:A modern, enterprise-ready business intelligence web application.
先说下公司项目使用过程中的感受。我们主要是将配置好的图表以IFrame的形式嵌入到其他页面中,单独做图表的话是比较费时费力的。
D3.js
,感觉风格有些不符合国内的偏好,好在开源,可以扩展如echarts
等图表。整体来说,配置和使用还是比较方便的。毕竟是免费的,不要要求太高。
根据官方文档,咱们使用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
对沸点内容关键词制作词云等。
可能的话,后台专门跑个服务对沸点数据进行定时抓取和更新,并制作数据大屏进行展示。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有