日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

利用python分析了下乘风破浪的姐姐

發布時間:2025/1/21 python 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用python分析了下乘风破浪的姐姐 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“AI搞事情”關注我們


要說今年最火的綜藝節目,興風作浪……,哦,不對;小明歷險記……,也不對,哎!算了,接著看吧……

數據

利用爬蟲抓取了百度百科和維基百科上姐姐們的公開數據信息。兩個網站均為靜態的頁面,只需要對相應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 = "<div align=\"center\" style=\"width:1840px;\">\n<span style=\"font-size:32px;font face=\'黑體\';color:#FFFFFF\"><b> </b></div>"body.insert(0, BeautifulSoup(div_title, "lxml").div)html_new = str(html_bf)html.seek(0, 0)html.truncate()html.write(html_new)html.close()df = pd.read_csv('data/sister_data.csv', encoding='utf-8', sep='\t')# 彈幕數據 df_all = pd.DataFrame() for i in range(1, 9):tmp = pd.read_csv('sister/sister/danmu_info_%d.csv' % i, encoding='utf-8', sep='\t')df_all = df_all.append(tmp)# print(df['names'].tolist()) df.sort_values('總分', ascending=False, inplace=True) # 昵稱 df['昵稱'] = ['藍盈瑩|盈瑩', '黃齡', '丹妮', '孟佳', '夢辰','可唯', '寧靜|靜靜子|靜姐', '霏霏', '希怡', '袁詠琳','圣依|依依子', '金晨', '阿朵', '含韻', '白冰','鐘麗緹', '茜|茜茜子', '張萌|萌萌子', '婧汐', '丁當','許飛', '劉蕓|蕓蕓子', '吳昕|昕昕子|昕姐|昕昕', '伊能靜', '松伶','麗坤', '張雨綺|雨綺|綺綺子', '海陸', '金莎', '王智'] print(df.head(5)) print(df.columns)for name in df.names.tolist():image1 = Image()img_src = ("../img/%s.jpg" % name # html 路徑問題)image1.add(src=img_src,style_opts={"width": "345px", "height": "584px", "style": "margin-top: 15px"},)image1.set_global_opts(title_opts=ComponentTitleOpts(title_style={"style": "color: white; font-size: 18px; font-weight:bold;"},subtitle_style={"style": "color: white;font-size: 12px;"}))# 雷達圖value = df[["個人特質", "聲樂表現力", "成團潛力", "舞臺表現力"]][df.names == name].values[0]data = [{"value": [float(i) for i in value], "name": "分數"}]c_schema = [{"name": "個人特質", "max": 25, "min": 0},{"name": "聲樂表現力", "max": 25, "min": 0},{"name": "成團潛力", "max": 25, "min": 0},{"name": "舞臺表現力", "max": 25, "min": 0},]radar = (Radar().set_colors(["#4587E7"]).add_schema(schema=c_schema,shape="circle",center=["50%", "50%"],radius="80%",angleaxis_opts=opts.AngleAxisOpts(min_=0,max_=360,is_clockwise=False,interval=5,axistick_opts=opts.AxisTickOpts(is_show=False),axislabel_opts=opts.LabelOpts(is_show=False),axisline_opts=opts.AxisLineOpts(is_show=False),splitline_opts=opts.SplitLineOpts(is_show=False),),radiusaxis_opts=opts.RadiusAxisOpts(min_=0,max_=25,interval=5,splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),),polar_opts=opts.PolarOpts(),splitarea_opt=opts.SplitAreaOpts(is_show=False),splitline_opt=opts.SplitLineOpts(is_show=False),).add(series_name="分數",data=data,color="#f9713c",areastyle_opts=opts.AreaStyleOpts(opacity=0.1),linestyle_opts=opts.LineStyleOpts(width=1),))# 彈幕詞云tmp = df[df.names == name]my_words_list = df.昵稱.str.cat(sep='。').replace('|', '。').split('。')print(tmp.昵稱.values[0])text1 = get_cut_words(content_series=df_all.content[df_all.content.str.contains(tmp.昵稱.values[0])])wordCount_dict = Counter(text1)choices_number = 200count_list = sorted(wordCount_dict.items(), key=lambda x:x[1],reverse=True)count_list = count_list[:choices_number]keyword_list = [k[0] for k in count_list]value_list = [k[1] for k in count_list]wc = (WordCloud().add(series_name="彈幕詞云", data_pair=count_list, word_size_range=[20, 100],textstyle_opts=opts.TextStyleOpts(font_family="cursive"),shape=SymbolType.DIAMOND).set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=True),))show_all()

往期推薦

  • 蹭一波熱度,對《青春有你2》109位漂亮小姐姐下手了

  • python獲取原圖GPS位置信息,輕松得到你的活動軌跡

  • Scrapy爬取姓名大全,看看那個名字最受父母青睞

長按二維碼關注我們

有趣的靈魂在等你

留言請摁

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的利用python分析了下乘风破浪的姐姐的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕乱码人妻无码久久 | 欧美黄色一级生活片 | 日韩精品少妇 | 天天碰视频| 麻豆视频网站 | 成人乱码一区二区三区av | 精品国产毛片 | 少女情窦初开的第4集在线观看 | 亚洲成人手机在线 | 欧美性xxxxxxxxx | 怡红院一区二区三区 | 亚洲加勒比在线 | 欧美a级黄色片 | 亚洲熟女少妇一区二区 | 国产精品系列在线 | 日本少妇激情 | 中文字幕精品在线 | 日韩色吧 | 久久五月天综合 | 日韩色道 | av在线毛片| 国产精品制服丝袜 | 超碰人人做 | 麻豆亚洲精品 | 四虎黄色| 高清乱码毛片 | 奶水喷溅 在线播放 | 99自拍偷拍 | 国产伦精品一区二区三区视频我 | 国产区视频在线观看 | 亚洲精品乱码久久久久久日本蜜臀 | 丰满护士巨好爽好大乳 | 欧美黑人三级 | 国产乱码久久久久久 | 亚洲欧洲免费视频 | 极品少妇视频 | 激情婷婷六月 | 99在线观看 | 二区国产 | 国产一二三在线视频 | www噜噜噜| 黄色特级一级片 | 伊人久久视频 | av中文字 | 精品人妻大屁股白浆无码 | 欧美在线小视频 | 成人国产一区二区三区 | 男同毛片 | 午夜理伦三级理论 | 久久精品国产亚洲a | 青青草97国产精品免费观看 | 国产色网站 | 涩涩的视频在线观看 | 艳妇乳肉豪妇荡乳 | 精品一区在线播放 | 国产丝袜一区二区 | 被两个男人吃奶三p爽文 | 91精品中文字幕 | 午夜一区二区三区免费观看 | 天堂视频在线免费观看 | 深夜在线网站 | 色老头一区二区三区在线观看 | 女人16一毛片 | 成人无高清96免费 | 欧美亚洲国产一区 | 国产自产在线 | 最新91视频 | 精品女同一区二区 | 久久久久国 | 日本在线视频一区二区 | 一二三四区在线 | 成人免费看片又大又黄 | 欧美巨乳在线观看 | 国产一区二区在线免费观看 | 吃瓜网今日吃瓜 热门大瓜 色婷在线 | 亲子伦视频一区二区三区 | 有码一区二区三区 | 亚洲一区二区三区免费观看 | 欧美成人精品激情在线视频 | 国产精品永久在线观看 | 97视频免费在线观看 | 午夜免费播放观看在线视频 | 亚洲精品国产综合 | 富二代成人短视频 | 玖玖在线精品 | 亚洲图片另类小说 | 成人欧美一区二区三区黑人 | 春闺艳妇(h)高h产乳 | 国产精品对白刺激久久久 | 永久免费AV无码网站韩国毛片 | av免费观 | 日本妇女毛茸茸 | 日韩高清网站 | 人人狠狠综合久久亚洲 | 又粗又猛又爽又黄少妇视频网站 | 奇米精品一区二区三区四区 | 无码国内精品人妻少妇蜜桃视频 | 日韩激情图片 | 久草资源在线观看 |