目录

​一、数据​

​1、python源码​

​二、数据处理​

​1、json数据规整化(参考往期文章)​

​        ①将'{变为{(快捷键ctrl+H)​

​         ②单引号变双引号(此处的单引号和双引号一定要是英文符号的)​

​         ③"    "变为空​

​         ④,  ,变为,​

​        ⑤ 中文引号变英文引号​

​         ⑥}变为},​

​2.数据处理总结​

​3.json数据处理工具​

​        ①使用 ​

​ 三、数据可视化​

​1、将修正过的json数据转换为excel表格数据​

​ 2、使用可视化工具tableau​

​         ①将excel数据导入tableau中​

​        ②制图​

​ 四、数据分析​

​  1、结论1​

​  2、结论2​

​ 3、结论3​

​五、数据对比​

​ 1、结论1​

​2、结论2​

​3、结论3​

​ 六、总结​


一、数据

通过python获取

1、python源码

#!/usr/bin/python
# coding=utf-8
import requests
import json
import urllib.request
from lxml import etree
import sys # reload()之前必须要引入模块
# reload(sys)
# sys.setdefaultencoding('utf-8') # 解决中文乱码

count = 1
base_url = "https://www.douyu.com/gapi/rkc/directory/mixList/0_0/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}

# 存放数据路径
host_file_data = open("file_data_twenty.json", "w", encoding='utf-8')
# 请求200页数据
while count < 200:
request_url = base_url + str(count)#url
response = requests.get(url=request_url,headers=headers)#请求对象定制
content = response.text#获取网页内容
#load json data
json_data = json.loads(response.text)
for host_info in json_data["data"]["rl"]:
# 解析json里面的房间名,房间类型,主播名称,房间人数
home_name = host_info["rn"].replace(" ", "").replace(",", "")
home_type = host_info["c2name"]
host_name = host_info["nn"]
home_user_num = host_info["ol"]
print ("\033[31m房间名:\033[0m%s,\033[31m房间类型:\033[0m%s,\033[31m主播名称:\033[0m%s,\033[31m房间人数:\033[0m%s"\
% (home_name, home_type, host_name, home_user_num))
#写入文件中
host_file_data.write(("{{'房间名':'{}' ,'\t' ,'房间类型':'{}' ,'\t' , '主播名称':'{}' ,'\t' ,'房间人数':'{}'}}\n'").format(home_name, home_type, host_name, home_user_num))
count += 1

二、数据处理

        爬取出来的数据是json类型,但不是规整的数据,需要进行数据处理。

1、json数据规整化(参考往期文章)

        对爬虫文件的处理

        ①将'{变为{(快捷键ctrl+H)

可视化案例_python源码

         ②单引号变双引号(此处的单引号和双引号一定要是英文符号的)

可视化案例_爬虫_02

         ③"    "变为空

可视化案例_python源码_03

         ④,  ,变为,

可视化案例_数据_04

        ⑤ 中文引号变英文引号

可视化案例_数据分析_05

         ⑥}变为},

可视化案例_数据_06

2.数据处理总结

        根据json的编码规则,首先,存储在一堆[]括号中,其次键值对用双括号括起来,再者用{}来间隔数据,最后,在双引号中的数据不能有空格和一些特殊字符。每次替换之后做小叫会显示处理的数据量,如果没有找到文本,说明处理的数据有问题(注意中英文符号),例如,   ,这种的处理,建议去数据中复制然后再进行替换。

3.json数据处理工具

        ①使用 

        将json数据导入左边方框,然后点击向右的箭头,如果报错,最上面会显示第几行的问题,然后找到响应的行进行处理即可(此处只能一次一次的找),当没有错误之后,就会变成如下情况。

可视化案例_数据_07

 三、数据可视化

1、将修正过的json数据转换为excel表格数据

        (可参考往期文章)

 2、使用可视化工具tableau

         ①将excel数据导入tableau中

可视化案例_爬虫_08

可视化案例_爬虫_09

        ②制图

(1)人气排行图

可视化案例_爬虫_10

 (2)直播类型占比图

可视化案例_python源码_11

③观看直播种类人气排行

可视化案例_数据_12

 四、数据分析

  1、结论1

可视化案例_python源码_13

                由此图可以看出,12点这个时间点人气排行top5为:呆妹小霸王,智勋勋勋勋,少年不太冷2,忘忧妹妹,孙悟空,这五位主播,其直播的类型分别为:热门游戏,英雄联盟,xx荣耀,传奇,xx联盟;其房间人数分别为:3.7M,2.6M,2.2M,2.1M,2.0M,由此可以假设这个时间点观看xx联盟的人数最多(数据较单一,不可直接得出结论,还需有其它佐证)

  2、结论2

可视化案例_数据_14

         由此图可以看出,12点这个时间段直播类型的百分比,直播xx联盟的人是最多的,占比25.35%,其次是原创ip,占比19.05,第三位是xx荣耀,占比12.57。其数据对上述做的假设起到了一定的印证作用(直播的人数多,其观看的人数肯定不会少),但也还不能完全印证假设。

 3、结论3

可视化案例_python源码_15

        由此图可以得出,观看xx荣耀的人数是最多的,推翻了之前的假设,也就是说直播xx联盟的主播是最多的,人气排行top5中占比最多的也是xx联盟,但是观看最多的确实xx荣耀,说明直播xx联盟的人很多,但是xx观看xx联盟直播的却不多,反而是观看xx荣耀的更多。

五、数据对比

 1、结论1

 

可视化案例_爬虫_16

可视化案例_爬虫_17

        由两张图对比可知,中午12点的直播人数,观看人数,以及直播类型均是不一样的;晚上8点时,不管是观看直播的人数,还是直播的人数,均比中午12点时更多,说明晚上是直播和观看直播的高峰期。

2、结论2

可视化案例_爬虫_18

可视化案例_python源码_19

         由两图对比可知,晚上八点直播的种类更多了,但是直播最多的依然是英雄联盟,直播xx荣耀的人更多了,上升到了第二名,并且增加了xx精英和cs:go等游戏。

3、结论3

可视化案例_爬虫_20

可视化案例_数据分析_21

         由两图对比可知,观看xx荣耀的人数依然是最多的,但是观看的人是涨了一倍,印证了八点是直播和观看直播的高峰期;观看xx联盟的人数从第二下降到了第三,而热门游戏从第三上升到了第二 ;

 六、总结

        以上的数据都只是某个时间段的数据,而且是有筛选的(数据太少的给筛除掉了,但不影响判断),可能结论不会那么精确,但是偏差也不会很大,要是想数据更精确,需爬取更多时间短的数据进行对比;①xx直播的xx联盟版块直播的人数是最多的②xx直播最火热的版块是xx荣耀③最火热的时间点是晚上8点附近;④根据火热时间以及火热的人数,可以推断出使用xx直播的主要用户的年龄是15-25岁;