爬虫+可视化「奔跑吧」全系列嘉宾名单

2024-05-15 12:08

本文主要是介绍爬虫+可视化「奔跑吧」全系列嘉宾名单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是「进击的Coder」的第 405 篇技术分享

作者:李运辰

来源:Python研究者

今天给大家带来『奔跑吧』全系列的嘉宾名单爬取和可视化的实现,分析每位嘉宾参加次数(可能有的嘉宾参加过几季),以及统计嘉宾职业类型个数,最后进行可视化展示分析。

1

网页分析

通过网上查询,知道『奔跑吧』到目前为止一共9季,先是奔跑吧兄弟1~4,到后面改名为奔跑吧1~4,以及奔跑吧黄河篇。

对应的网页链接如下:

url_list=['https://baike.baidu.com/item/奔跑吧兄弟第一季#4_2','https://baike.baidu.com/item/奔跑吧兄弟第二季/16414779','https://baike.baidu.com/item/奔跑吧兄弟第三季','https://baike.baidu.com/item/奔跑吧兄弟第四季','https://baike.baidu.com/item/奔跑吧第一季/20433390?fromtitle=奔跑吧第1季&fromid=22645259&fr=aladdin#4_2','https://baike.baidu.com/item/奔跑吧第二季/22421345?fromtitle=奔跑吧第2季&fromid=22645247&fr=aladdin#4_2','https://baike.baidu.com/item/奔跑吧第三季/23284990?fromtitle=奔跑吧第3季&fromid=23285732&fr=aladdin','https://baike.baidu.com/item/奔跑吧第四季/24701671?fromtitle=奔跑吧第4季&fromid=50003758&fr=aladdin','https://baike.baidu.com/item/奔跑吧·黄河篇/53052048'
]

1.分析网页结构

首先以奔跑吧第1季为例去分析网页结构(其他的链接网页结构一样)

咱们主要是爬取嘉宾姓名和明星类型(演员、歌手等)

本来想通过xpath解析网页方式去定位数据,但是发现定位不到,所以就采取了另外一种方式:字符串截取(其实正则re也可以,有很多种方式,只要能够解析出来即可,大家可以自由发挥)

截取前后分别是:分期嘉宾、表演嘉宾

2

获取数据

首先导入相应的库

import requests
from lxml import etree
import json
import time
import openpyxl

将9季的网页链接放到集合中url_list,同时定义name存放嘉宾名字,types是明星类型(歌手、演员等)

### 姓名
name = []
### 明星类型
types = []
url_list=['https://baike.baidu.com/item/奔跑吧兄弟第一季#4_2','https://baike.baidu.com/item/奔跑吧兄弟第二季/16414779','https://baike.baidu.com/item/奔跑吧兄弟第三季','https://baike.baidu.com/item/奔跑吧兄弟第四季','https://baike.baidu.com/item/奔跑吧第一季/20433390?fromtitle=奔跑吧第1季&fromid=22645259&fr=aladdin#4_2','https://baike.baidu.com/item/奔跑吧第二季/22421345?fromtitle=奔跑吧第2季&fromid=22645247&fr=aladdin#4_2','https://baike.baidu.com/item/奔跑吧第三季/23284990?fromtitle=奔跑吧第3季&fromid=23285732&fr=aladdin','https://baike.baidu.com/item/奔跑吧第四季/24701671?fromtitle=奔跑吧第4季&fromid=50003758&fr=aladdin','https://baike.baidu.com/item/奔跑吧·黄河篇/53052048'
]

开始请求数据

### 循环遍历
for u in url_list:url = uprint(url)res = requests.get(url,headers=headers)res.encoding = 'utf-8'text = res.textsp1 = text.split("参与期数")[1].split("表演嘉宾")[0]selector = etree.HTML(sp1)tr_list = selector.xpath('.//tr')tr_list = tr_list[1:]###名字for i in tr_list:#print(i.xpath(".//div[@class='para']/b/a/text()")[0])name.append(i.xpath(".//div[@class='para']/b/a/text()")[0])### 明星类型for i in tr_list:te = i.xpath(".//div[@class='para']/text()")[0]te = te.split(",")[0].replace("(","")#print(te)types.append(te)print(name)
print(types)
print(len(name))
print(len(types))

保存数据(excel)

outwb = openpyxl.Workbook()
outws = outwb.create_sheet(index=0)
outws.cell(row=1, column=1, value="名字")
outws.cell(row=1, column=2, value="明星类型")
for i in range(0,len(name)):outws.cell(row=i+2, column=1, value=str(name[i]))outws.cell(row=i+2, column=2, value=str(types[i]))
outwb_p.save("奔跑吧嘉宾名单-李运辰.xls")  # 保存

3

可视化分析

1.统计每一位嘉宾参加次数排名(取前15)

首先读取excel中数据,其中名字(第一列)存放在name变量中,明星类型(第二列)存放在types变量中。

data = pd.read_excel("奔跑吧嘉宾名单-李运辰.xls")
name = data['名字'].tolist()
types = data['明星类型'].tolist()

然后对name,嘉宾名字进行个数(参加过多少次)统计排名(取前15)

# 排序方法
from collections import Counter
# 排序
d = sorted(result.items(), key=lambda x: x[1], reverse=True)
name_key = [d[i][0] for i in range(0,16)]
value = [d[i][1] for i in range(0,16)]
print(name_key)
print(value)

进行可视化展示

导入相关的库

### 画图
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.charts import Bar
from pyecharts.charts import Pie

绘图代码

# 链式调用c = (Bar(init_opts=opts.InitOpts(  # 初始配置项theme=ThemeType.MACARONS,animation_opts=opts.AnimationOpts(animation_delay=1000, animation_easing="cubicOut"  # 初始动画延迟和缓动效果))).add_xaxis(xaxis_data=name_key)  # x轴.add_yaxis(series_name="统计每一位嘉宾参加次数排名(取前15)", y_axis=values)  # y轴.set_global_opts(title_opts=opts.TitleOpts(title='', subtitle='',  # 标题配置和调整位置title_textstyle_opts=opts.TextStyleOpts(font_family='SimHei', font_size=25, font_weight='bold', color='red',), pos_left="90%", pos_top="10",),xaxis_opts=opts.AxisOpts(name='嘉宾', axislabel_opts=opts.LabelOpts(rotate=45)),# 设置x名称和Label rotate解决标签名字过长使用yaxis_opts=opts.AxisOpts(name='次数'),).render("统计每一位嘉宾参加次数排名(取前15).html"))

从图中可以看到,参加奔跑吧节目最多的嘉宾是:林更新(3次),其他的最多的次数是两次。

2.嘉宾职业类型统计

从嘉宾(明星)类型中可以大概知道有这么几类(演员、歌手、主持人、模特、主持人、运动员、舞者、制片人、赛车手、经纪人)

开始统计以上这几种职业类型的个数

### 嘉宾职业类型name = ['演员','歌手','主持人','模特','主持人','运动员','舞者','制片人','赛车手','经纪人']### 初始化为0value = [0,0,0,0,0,0,0,0,0,0]for i in types:for j in range(0,len(name)):if name[j] in i:value[j] = value[j] +1print(name)print(value)

开始绘图

pie = Pie("嘉宾职业类型统计",title_pos='center')
pie.add("",name,value,radius=[40, 75],label_text_color=None,is_label_show=True,is_more_utils=True,legend_orient="vertical",legend_pos="left",
)
pie.render(path="嘉宾职业类型统计.html")

从统计图来看,嘉宾中职业最多的是演员,其次是歌手。

4

小结

今天分析『奔跑吧』全系列的嘉宾名单,分析每位嘉宾参加次数(可能有的嘉宾参加过几季),以及统计嘉宾职业类型个数,最后进行可视化展示分析。

End

「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。

看完记得关注@进击的Coder

及时收看更多好文

↓↓↓

点个在看你最好看

这篇关于爬虫+可视化「奔跑吧」全系列嘉宾名单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991793

相关文章

可视化实训复习篇章

前言: 今天,我们来学习seaborn库可视化,当然,这个建立在Matplotlib的基础上,话不多说,进入今天的正题吧!当然,这个是《python数据分析与应用》书中,大家有需求的可以参考这本书。 知识点: Matplotlib中有两套接口分别是pyplot和pyylab,即绘图时候主要导入的是Matplotlib库下的两个子模块(两个py文件)matplotlib.pyplot和matp

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

【第十三课】区域经济可视化表达——符号表达与标注

一、前言 地图最直接的表达就是使用符号表达。使用符号可以把简单的点线面要 素渲染成最直观的地理符号,提高地图的可读性。只要掌握了 ArcGIS 符号制 作的技巧,分析符号并总结出规则,就可以制作符合要求的地图+符号。 (一)符号的选择与修改 符号的选择在制图中至关重要,使用符号选择器对话框可从多个可用样式 中选择符号,并且每个符号都有一个标签用来描述其图形特征,如颜色或类型, 利用这些标签可

Python爬虫-贝壳新房

前言 本文是该专栏的第32篇,后面会持续分享python爬虫干货知识,记得关注。 本文以某房网为例,如下图所示,采集对应城市的新房房源数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地址:aHR0cHM6Ly93aC5mYW5nLmtlLmNvbS9sb3VwYW4v 目标:采集对应城市的

爬虫阶段思考

内容:写这篇文章是因为最近帮同学改了很多的爬虫代码,感触良多。 我用豆瓣为例,并不是不会用别的,而是这个我个人感觉最经典。然后还会写我遇到的一些问题以及解决方法。 首先,我们得先知道怎样爬取。我用的scrapy框架爬取。 我对此图的理解就是: 从spiders中获得一个请求(REQUEST),通过引擎传递给调度器,之后再返回给引擎,引擎把url封装好后传递给下载器,下载器将资源下载好后

【python】python葡萄酒国家分布情况数据分析pyecharts可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 python葡萄酒国家分布情况数据分析pyecharts可视化(源码+数据集+论文)【独一无二】 目录 python葡

【python】python基于akshare企业财务数据对比分析可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 系列文章目录 目录 系列文章目录一、设计要求二、设计思路三、可视化分析 一、设计要求 选取中铁和贵州茅

【python】python股票量化交易策略分析可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 【python】python股票量化交易策略分析可视化(源码+数据集+论文)【独一无二】 目录 【python】pyt

【科学计算与可视化】2. pandas 基础

1. 安装 Pandas 首先,确保你已经安装了 Pandas。你可以使用以下命令安装:pip install pandas 2. 导入 Pandas 在开始使用 Pandas 之前,你需要先导入它:import pandas as pd 3. 创建数据结构 Pandas 主要有两种数据结构:Series 和 DataFrame。 3.1 Series Series 是一个一维的标签

Seaborn:数据可视化的强大工具

文章目录 引言Seaborn的原理1. 底层结构2. 数据集成3. 图形类型 Seaborn的使用1. 安装与导入2. 数据加载与探索3. 绘制图形分布图关系图分类图 4. 图形定制5. 导出图形 结论 引言 在数据分析和科学计算领域,数据可视化是一个至关重要的步骤。它能够帮助我们更直观地理解数据中的模式、趋势和关联。在Python的数据可视化库中,Seaborn是一个基于ma