python
利用python分析了下乘风破浪的姐姐 -凯发ag旗舰厅登录网址下载
点击上方“ai搞事情”关注凯发ag旗舰厅登录网址下载
要说今年最火的综艺节目,兴风作浪……,哦,不对;小明历险记……,也不对,哎!算了,接着看吧……
数据
利用爬虫抓取了百度百科和维基百科上姐姐们的公开数据信息。两个网站均为静态的页面,只需要对相应html标签进行解析即可获取相应的数据。(更简单的方法也可以直接复制相应的表格信息到本地)
百度百科
百度百科页面解析ps:仔细一瞧,百度百科上有些信息竟然是错的,比如陈松伶的初舞台评分。
宣传照维基百科
维基百科页面解析第一轮公演维基百科数据可以跟百度百科互补一下,对于评分细节更细致许多。
视频弹幕
看着视频,按f12打开开发者工具,然后在network下就会有弹幕json数据包不断的向你扔过来了,在headers栏可以查看json的路径。https://bullet-ali.hitv.com/bullet/2020/06/30/224134/8766480/0.json可以看出有日期,即爬取当天的弹幕数据,其余两个应该是节目id和视频id,x.json应该是按照节目的时间来定的,每60s一个数据包。
还是采用之前【链接】使用的scrapy框架进行弹幕数据爬取,新建项目与爬虫文件。
scrapy startproject sisiter cd sisiter scrapy genspider danmu bullet-ali.hitv.com构建数据item
import scrapy class danmuitem(scrapy.item):# define the fields for your item here like:# 视频idvid_id = scrapy.field()# iddanmu_id = scrapy.field()# unameuname = scrapy.field()# 内容content = scrapy.field()# 时间danmu_time = scrapy.field()# 点赞up_count = scrapy.field()# 分钟danmu_minites = scrapy.field()编写爬虫解析代码
# -*- coding: utf-8 -*- import scrapy import json from datetime import datetime from sister.items import danmuitemclass danmuspider(scrapy.spider):name = 'danmu'# allowed_domains = ['bullet-ws.hitv.com']start_urls = ['https://bullet-ali.hitv.com']date_str = datetime.now().strftime('%y/%m/%d')[:8] str(datetime.now().day)# 当前时日期num1 = 112744 # 节目参数 7/3最新一期num2 = 8980904 # 视频参数def start_requests(self):base_url = 'https://bullet-ali.hitv.com/bullet/%s/%d/%d/%d.json'for page in range(38):# 打印进度print('正在获取第{}页的信息'.format(page))url = base_url % (self.date_str, self.num1, self.num2, page)yield scrapy.request(url=url, meta={'step': page}, callback=self.parse)def parse(self, response):step = response.meta['step']json_data = json.loads(response.body)# 获取数据all_data = json_data['data']['items']print(len(all_data))for data in all_data:danmu_item = danmuitem()danmu_item['vid_id'] = self.num2danmu_item['danmu_id'] = data.get('id')danmu_item['uname'] = data.get('uname')danmu_item['content'] =data.get('content')danmu_item['danmu_time'] = data.get('time')danmu_item['up_count'] = data.get('v2_up_count')danmu_item['danmu_minites'] = step 1yield danmu_item保存数据pipeline
import pandas as pdclass sisterpipeline(object):def __init__(self):self.info_list = []def process_item(self, item, spider):self.info_list.append(item)return itemdef close_spider(self, spider):df = pd.dataframe(self.info_list)df.to_csv('danmu_info.csv', sep='\t', encoding='utf-8', index=false)保存的数据就是这样婶儿的
可视化
整体
首先,看看姐姐们都来自哪里,可以看出节目组在姐姐们的选择上兼顾到了两岸三地。
而且在民族构成上,也包含了7位少数民族选手,比如“土家族之花”--沈梦辰。
年龄分布情况
职业分布情况
年龄与初评得分的关系很明显了????
弹幕热度排行
弹幕词云,看来大家都 喜欢 姐姐
基于这些可视化结果,制作了一个简易的统计大屏进行展示:
每位浪姐
代码
import os import jieba import pandas as pd from bs4 import beautifulsoup import matplotlib.pyplot as plt from pyecharts.charts import page, sankey, wordcloud, radar from pyecharts.components import image from pyecharts.options import componenttitleopts from collections import counter from pyecharts.globals import symboltype from pyecharts import options as opts from pyecharts.options.global_options import themetype from pyecharts import options as opts from collections import counter import random#显示所有列 pd.set_option('display.max_columns', none) #显示所有行 pd.set_option('display.max_rows', none) #设置value的显示长度为100,默认为50 pd.set_option('max_colwidth',100)def get_cut_words(content_series):# 读入停用词表import jiebastop_words = []with open("data/stopwords.txt", 'r', encoding='utf-8') as f:lines = f.readlines()for line in lines:stop_words.append(line.strip())# 添加关键词my_words = ['杜华', '辣鸡', '导演组', '节目组', '不公平', '黄圣依', '无杜华版']for i in my_words:jieba.add_word(i)my_words2 = my_words_listfor j in my_words2:jieba.add_word(j)# 自定义停用词my_stop_words = ['第一期', '一堆', '三个', '真的', '哈哈哈', '哈哈哈哈', '啊啊啊']stop_words.extend(my_stop_words)# 分词word_num = jieba.lcut(content_series.str.cat(sep='。'), cut_all=false)# 条件筛选word_num_selected = [i for i in word_num if i not in stop_words and len(i) >= 2]return word_num_selecteddef show_all():page = page()page.add(image1,wc,radar)out_html = 'data/sister/%s.html' % namepage.render(out_html)# 修改样式with open(os.path.join(os.path.abspath("."), out_html), 'r ', encoding="utf8") as html:html_bf = beautifulsoup(html, "lxml")divs = html_bf.find_all("div")print(len(divs))divs[0]["style"] = "align=\"center\";margin:0 auto;text-align:center;"divs[1]["style"] = "width:550px;height:350px;position:absolute;top:120px;left:700px;border-style:solid;border-color:#444444;border-width:0px;" # 修改图表大小、位置、边框divs[2]["style"] = "width:700px;height:700px;position:absolute;top:120px;left:20px;border-style:solid;border-color:#444444;border-width:0px;" # 修改图表大小、位置、边框divs[3]["style"] = "width:600px;height:400px;position:absolute;top:300px;left:1250px;border-style:solid;border-color:#444444;border-width:0px;" # 修改图表大小、位置、边框# 修改页面背景色body = html_bf.find("body")body["style"] = "background-color:#333333;"# 追加标题div_title = "往期推荐
蹭一波热度,对《青春有你2》109位漂亮小姐姐下手了
python获取原图gps位置信息,轻松得到你的活动轨迹
scrapy爬取姓名大全,看看那个名字最受父母青睐
长按二维码关注凯发ag旗舰厅登录网址下载
有趣的灵魂在等你
留言请摁
与50位技术专家面对面20年技术见证,附赠技术全景图总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的利用python分析了下乘风破浪的姐姐的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。
- 上一篇:
- 下一篇: 目标又多又密?多轮迭代的方式进行密集目标