Python实现主播人气排行榜,带你发现人气王
前言
随着现在直播的兴起,主播这个职业逐渐走入人们的视野。越来越多有颜值、有才艺的人纷纷加入到主播这个行业。但是主播最难熬的就是前期粉丝的积累,粉丝多人气就高。
接下来带大家爬取主播直播间人气数据,发现人气王!!
喜欢的朋友欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等。
展示效果:
颜值区的主播人气值
本文知识点:
1、系统性的网页分析
2、数据处理
3、jsonpath模块的使用
环境介绍:
python 3.6
pycharm
requests
josnpath
爬虫的一般思路
1、分析目标网页,确定爬取的url路径,headers参数
2、发送请求 -- requests 模拟浏览器发送请求,获取响应数据
3、解析数据 -- jsonpath模块:JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具
4、数据输出
爬取数据
1、导入相关的数据库
import jsonpath
import requests
import pprint
2、分析目标网页,确定爬取的url路径,headers参数
URL地址:
headers参数:
base_url = 'https://www.douyu.com/gapi/rknc/directory/yzRec/1'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}
3、发送请求 -- requests 模拟浏览器发送请求,获取响应数据
response = requests.get(url=base_url, headers=headers)
json_data = response.json()
4、解析数据 -- jsonpath模块:JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具
字典根据值降序排列
sorted方法,sorted的三个参数:
iterable :可迭代对象。
key :主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,可以指定可迭代对象中的一个元素来进行排序。
reverse :排序规则,reverse = True 降序 , reverse = False 升序(默认)。
names = jsonpath.jsonpath(json_data, '$..nn') # $ 从根节点提取 .. 跨节点提取
hot = jsonpath.jsonpath(json_data, '$..ol')
print(names)
print(hot)
item_dict = {}
for name, value in zip(names, hot):
# print(name, value)
item_dict[name] = value
print(item_dict)
print(item_dict.items()) # items() 函数以列表返回可遍历的(键, 值) 元组数组。
change_score = sorted(item_dict.items(), key=lambda x: x[1], reverse=True) # lambda中的1是元组的索引
print(change_score)
5、数据输出
enumerate枚举 enumerate多用于在for循环中得到计数,利用它可以同时获得索引和值,即需要index和value值的时候可以使用enumerate
or player, hot_num in enumerate(change_score):
print('第{}名=======是{}========人气值为:{}'.format(player + 1, change_score[player][0], change_score[player][1]))
- 让XP支持4G内存
- Consul微服务的配置中心体验篇
- 如何使用Sentry实现Hive/Impala的数据脱敏
- 如何使用Oozie API接口向Kerberos环境的CDH集群提交Shell作业
- Docker下redis的主从、持久化配置
- vuejs、eggjs、mqtt全栈式开发设备管理系统
- Xss和Csrf介绍
- GraphQL介绍&使用nestjs构建GraphQL查询服务
- 使用auth_request模块实现nginx端鉴权控制
- Docker学习之Docker镜像基本使用
- Docker学习之Centos7下安装
- Impala的Short-Circuit Reads
- js各种继承方式汇总
- Cloudera Navigator异常分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- R语言对混合分布中的不可观测与可观测异质性因子分析
- R替换函数gsub
- R语言泊松回归对保险定价建模中的应用:风险敞口作为可能的解释变量
- asp dotnet core 提供大文件下载的测试
- R语言模拟人类生活预期寿命动态可视化动画图gif
- Python遍历字典
- R语言随机森林模型中具有相关特征的变量重要性
- WPF 使用 Direct Manipulation 的方法
- R语言分析负利率下金融市场:负利率和年金价值的变化
- python字典-增、删、改
- C# dotnet 使用判断文件夹存在的方法判断一个文件路径会怎样
- 怎样给wordpress网站模板,添加最新文章、随机文章、热评文章?
- [医疗信息化][DICOM教程]1.使用Java的DICOM基础-理解DICOM文件-DICOM Basics using Java - Making Sense of the DICOM File
- python自动播放网课
- Istio实战——流量管理