手把手教你如何使用 DataEase 对知乎账号进行数据分析

news/2024/7/8 0:11:13

前言

目前“知乎”的用户群体非常广泛,很多机构、商家、个人都会使用“知乎”进行推广宣传。当我们想对知乎账号的内容进行分析时,知乎平台所提供的内容分析功能却不能满足更多个性化的分析需求,例如:

1、仅支持单账号的数据分析,不支持多账号数据横向对比。

2、数据分析维度太少,且无法支持分析维度的个性化设置和拓展。

针对于以上存在的问题,经过不断的探索,我找到了一种解决方案:开源项目"知乎数据分析小助手" + 开源数据可视化分析工具 DataEase。

本方案利用"知乎数据分析小助手"进行数据获取,使用 DataEase 进行数据分析,通过两者的结合最终实现对多个知乎账号的多维度内容分析。

一、数据分析成果展示

二、环境准备

1、部署 DataEase

此部分可以参考 DataEase 官方文档进行操作,我使用的是 Linux 单机离线部署。

附部署教程地址:离线安装 - DataEase 文档

2、"知乎数据分析小助手"数据配置

(1)创建数据库

基于 DataEase 的数据库进行创建,若使用 DataEase 的默认mysql镜像,可参考以下步骤:

# 进入mysql容器
docker exec -it mysql mysql -u root -p
# 输入密码
Password123@mysql
# 创建数据库
create database demo
# 查看数据库
show databases;
# 退出
exit

若DataEase使用的是外部数据库地址,可在外部数据库中执行以下建库命令:

# 创建数据库
create database demo
# 查看数据库
show databases;

(2)配置知乎账号信息

# 进入DataEase的配置文件目录
cd /opt/dataease/conf
# 创建新的配置文件 demo.properties,具体配置可参考开源项目说明(附项目地址)
vim demo.properties

“知乎数据分析小助手”项目地址:知乎数据分析小助手: 获取知乎账号的文章、回答数据,存入数据库,用作仪表板分析的数据源https://gitee.com/zhaoqian617/zhihushujufenxixiaozhushou

3、部署开源项目“知乎数据分析小助手”,有 Docker 镜像部署和 JAR 包部署两种部署方式(建议采用镜像部署)

(1)Docker 镜像部署(点击此处下载镜像压缩包),下载后按以下步骤进行操作

# 将压缩包传至服务器的 /opt 目录下,解压压缩包
unzip zhihu-data-analysis.zip
# 为脚本赋权
chmod 777 installer.sh
# 执行部署脚本 install.sh(执行脚本之前请确保 DataEase 已部署完成,且 DataEase 部署目录为默认的 /opt/dataease 目录,且配置文件demo.properties已配置完成)
./installer.sh

(2)JAR 包部署(点击此处下载JAR 包),JAR 包部署需要自行安装 JDK 环境(具体如何安装配置 JDK 可自行百度),配置好JDK环境变量后,执行命令启动程序

nohup java -jar demo-v1.0.jar &

(注:也可自己下载项目源码进行打包部署)

三、获取并存储知乎账号的数据

1、定时同步,默认每天零点触发执行,可修改cron表达式进行配置

 2、接口调用

全量同步请求接口地址:http://IP地址:8099/test/sync/zhiHu

单用户同步请求接口地址:http://IP地址:8099/test/sync/zhiHu/用户名

​ 

四、使用 DataEase 对数据进行分析

1、添加数据源

2、添加数据集(以下sql数据集仅作参考,可视个人情况进行修改)

(1)添加文章、回答两个数据表的数据库数据集 

​ 

(2)添加“今日文章阅读量增长数” SQL数据集

select t.title,sum(t.curPv) growthPv,t.user,t.created_time,t.publish_time from (
		select answer1.pv-answer2.pv as curPv,answer1.title,answer1.user,answer1.`created_time`,answer1.publish_time from t_zhihu_answer  answer1
			JOIN t_zhihu_answer answer2 on DATE_FORMAT(answer2.`created_time`,"%Y-%m-%d") = DATE_SUB(DATE_FORMAT(answer1.`created_time`,"%Y-%m-%d"),INTERVAL 1 DAY)
			and answer1.title = answer2.title
			and answer1.user = answer2.user
		UNION
		select article1.pv-article2.pv as curPv,article1.title,article1.user,article1.`created_time`,article1.publish_time from t_zhihu_article  article1
			JOIN t_zhihu_article article2 on DATE_FORMAT(article2.`created_time`,"%Y-%m-%d") = DATE_SUB(DATE_FORMAT(article1.`created_time`,"%Y-%m-%d"),INTERVAL 1 DAY)
			and article1.title = article2.title
			and article1.user = article2.user
	) t
	WHERE t.publish_time>'2022' and DATE_FORMAT(t.`created_time`,"%Y-%m-%d" )= CURDATE()
	GROUP BY t.title

(3)添加“每日阅读总量数据” SQL数据集

select sum(t.sumpv) as sumpv, t.date from 
(
select sum(pv) as sumpv,DATE_FORMAT( `created_time`, "%Y-%m-%d" ) as date from t_zhihu_answer WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" )
UNION
select sum(pv) as sumpv,DATE_FORMAT( `created_time`, "%Y-%m-%d" ) as date from t_zhihu_article WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" )
) t
GROUP BY t.date

(4)添加“文章回答汇总” SQL数据集

select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'回答' as type,`user` from t_zhihu_answer
where publish_time>'2022'
UNION
select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'文章' as type,`user` from t_zhihu_article
where publish_time>'2022'
ORDER BY pv desc

(5)添加“文章回答占比” SQL数据集

select sum(IF(t.type='回答',0,t.pv)) as '回答',sum(t.pv) sumPv,'回答' as type from 
(
select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'回答' as type from t_zhihu_answer WHERE publish_time>'2022'
UNION
select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'文章' as type from t_zhihu_article WHERE publish_time>'2022'
) t
UNION
select sum(IF(t.type='文章',0,t.pv)) as '文章',sum(t.pv) sumPv,'文章' as type from 
(
select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'回答' as type from t_zhihu_answer WHERE publish_time>'2022'
UNION
select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'文章' as type from t_zhihu_article WHERE publish_time>'2022'
) t

(6)添加“阅读总量top10” SQL数据集

select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'回答' as type from t_zhihu_answer WHERE publish_time>'2022'
UNION
select id,pv,play,`show`,upvote,`comment`,`like`,collect,`share`,reaction,re_pin,title,publish_time,created_time,link,'文章' as type from t_zhihu_article WHERE publish_time>'2022'
ORDER BY pv desc

(7)添加“账号回答文章阅读数” SQL数据集

select sum(pv) as sumpv,`created_time`, `user`,'回答' as type from t_zhihu_answer WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" ),`user`
UNION
select sum(pv) as sumpv,`created_time`, `user`,'文章' as type from t_zhihu_article WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" ),`user`

(8)添加“账号每日阅读量” SQL数据集

select sum(t.sumpv) as sumpv, t.date,t.`user` from 
(
select sum(pv) as sumpv,DATE_FORMAT( `created_time`, "%Y-%m-%d" ) as date, `user` from t_zhihu_answer WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" ),`user`
UNION
select sum(pv) as sumpv,DATE_FORMAT( `created_time`, "%Y-%m-%d" ) as date, `user` from t_zhihu_article WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" ),`user`
) t
GROUP BY t.date,t.`user`

(9)添加“账号每日阅读增量” SQL数据集

select tt.* from (
	select SUM(t.sumpv) as addPvOneDay,t.date,t.`user` from (
	select sum(pv) as sumpv,DATE_FORMAT( `created_time`, "%Y-%m-%d" ) as date, `user` from t_zhihu_answer WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" ),`user`
	UNION
	select -sum(pv) as sumpv,DATE_FORMAT(DATE_ADD(`created_time`,INTERVAL 1 DAY), "%Y-%m-%d") as date, `user` from t_zhihu_answer WHERE publish_time>'2022' GROUP BY DATE_FORMAT( `created_time`, "%Y-%m-%d" ),`user`
	) t 
	GROUP BY t.date,t.`user`
) tt WHERE tt.addPvOneDay>=0 and tt.date!='2022-09-26' and tt.date!='2022-09-27'

3、制作仪表板(导入模板)

(1)通过导入模板的方式创建仪表板,仪表板创建成功后,逐个编辑仪表板中的视图,修改视图的数据集即可(点击此处下载模板)。

​  


http://lihuaxi.xjx100.cn/news/65822.html

相关文章

reactive-native踩坑记录

IOS篇 1.Failed to install Cocopods depencies for iOS project 按照提示的命令进入ios的文件夹执行[pod install],这个是由于网络问题导致pod的依赖无法下载安装,所以执行命令的时候能够科学上网即可,目前几个RN版本都已经不支持手动去下载…

depth estimation笔记

Background of Camera 凸透镜可以成像,用作相机镜头。光线透过凸透镜后一般会发生折射,但凸透镜中存在一点,使得通过的光线不发生折射,谓之光学中心,简称光心[1],可以近似将凸透镜中心看作光心的位置[2]。…

TiDB高可靠常见问题

本文档介绍高可靠相关的常见问题。 我们的安全漏洞扫描工具对 MySQL version 有要求,TiDB 是否支持修改 server 版本号呢? TiDB 在 v3.0.8 后支持通过 TiDB 配置文件中的 server-version 配置项来修改 server 版本号。 对于 v4.0 及以上版本的集群&am…

(附源码)计算机毕业设计SSM影院售票系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

P7617 [COCI2011-2012#2] KOMPIĆI 题解

P7617 [COCI2011-2012#2] KOMPIĆI 题解题目链接字面描述题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2提示【样例解释】【数据范围】【说明】思路部分分所有分代码实现题目 链接 https://www.luogu.com.cn/problem/P7617 字面描述 …

linux网卡收数据包内核流程学习笔记

一.网卡初始化 网络子系统初始化 为每个CPU都初始化如下一个结构: struct softnet_data { struct Qdisc *output_queue; struct Qdisc **output_queue_tailp; struct list_head poll_list; // 是个双向链表…

基于STM32的F1的RTC实时时钟+CUBEMX实时获取时间戳实现断电跨天同步时间戳

目录 问题描述 实时获取时间戳断电跨日期时间戳同步 问题描述 今需要把STM32所采集的数据带日期的形式发送到后端服务器上进行处理,由于STM32F103本身是自带有实时时钟的。该RTC(实时时钟)是一个不断递增的计数器,断电后由纽扣电池继续供电计数。奈何它…

作为一名HR,有哪些证书可以考?

在当今社会中,职场相互竞争残忍,没有一种技能,没有学历证书,就算你说破天没用,因为硬性条件达不到,往往不会给你面试的机会。 现在对于资格证书考试,虽说水分越来越多,有含金量的越…