ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python实现主播人气排行榜,带你发现人气王

2020-06-04 21:54:15  阅读:248  来源: 互联网

标签:headers Python print jsonpath dict item 人气 主播


前言

随着现在直播的兴起,主播这个职业逐渐走入人们的视野。越来越多有颜值、有才艺的人纷纷加入到主播这个行业。但是主播最难熬的就是前期粉丝的积累,粉丝多人气就高。

接下来带大家爬取主播直播间人气数据,发现人气王!!

加企鹅群695185429即可免费获取,资料全在群文件里。资料可以领取包括不限于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

 

标签:headers,Python,print,jsonpath,dict,item,人气,主播
来源: https://www.cnblogs.com/python0921/p/13046687.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有