社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

《延禧攻略》演员大起底——利用Python+bs+pyecharts分析绘制词云和玫瑰图

程序人生 • 6 年前 • 473 次点击  

点击上方“程序人生”,选择“置顶公众号”

第一时间关注程序猿(媛)身边的故事


作者

YOUNG

已获原作者授权,如需转载,请联系原作者。


最近大火的电视剧《延禧攻略》已宣告大结局,除了剧情走心,演员的那些头花啊头饰啊,戏服也都精致无比。本文利用Python抓取互联网上演员的部分数据,分析演员的姓名、星座、身高、体重和籍贯等信息,利用bs+pyecharts绘制词云和玫瑰图。


为什么这么闲?


《延禧攻略》可以说是于正的洗白之作,没有特别的戏说,也没有异想天开的改编,在基本尊重历史事实的基础上,通过魏璎珞(令妃)的视角窥探整个后宫的众生相。可以称得上“管中窥豹,可见一斑”。


某位哲人说过:一个电视剧这么火,背后一定有原因。背后绝对有JQ。又有哲人说过:内因很重要为此决定现学现卖,抛砖引玉地分析一下演员背后的因素。



1、分析网页


Step1:分析网页内容


感谢电视指南网http://www.tvzn.com/14784/yanyuanbiao.html)的数据支撑。


通过浏览网页,发现我们所需的演员信息:



Step2:分析网页数据格式


通过网页格式,可知所需的信息


    class="gclearfix" >
       <li><a class="mh-pic" href="/14784/role/203516.html" target="_blank"><img height="124" class="mh-img" alt="秦岚" src="http://img.tvzn.com/role/simages/203516.jpg"><span class="mh-role">富察·容音span><span class="mh-mask">span>a><p class="mh-title"><a class="mh-actor" href="/person/553.html"> 秦岚a>饰演p>li>



为此,可利用beautifulsoup查找关键信息:

contents1 = soup.find('ul', class_="gclearfix").findAll("li")



Step3:定点抓取数据


通过循环抓取主演姓名信息

actorName = content.find("p", class_="mh-title").find("a", class_="mh-actor")


通过循环抓取非主演姓名信息

actorName = content.find("p", class_="mh-l").find("a", class_="mh-actor")



2、汇总数据


将演员的姓氏和名字分开统计:

surnamelist = [];
givennamelist = [];
surname_dict = {}
for actorname in nameList:    
   surnamelist.append(actorname[0]);
   for givenname in actorname[2:]:
       givennamelist.append(givenname)    
   if actorname[0] not in surname_dict:
       surname_dict[actorname[0]] = 1
   else:
       surname_dict[actorname[0]] += 1


3、绘制词云


利用wordcloud绘制词云:

word_count = collections.Counter(surnamelist );
# 设置词云属性
wc = WordCloud(font_path=font_path,  # 设置字体
              background_color="white",  # 背景颜色
              max_words=2000,  # 词云显示的最大词数
              mask=back_coloring,  # 设置背景图片
              max_font_size=100,  # 字体最大值
              random_state=42,
              width=1000, height=860, margin=1,)

wc.generate_from_frequencies(word_count);


姓氏(主角背景版):


姓氏(苹果背景版):




名字:



4、进一步抓取信息


费了这么大的劲,只分析一个姓名感觉不能得到满足,通过仔细分析网页结构,有一个惊喜的发现:

每个演员都有个人的链接!!!

链接信息就在href中:

class="mh-actor" href="/person/553.html">秦岚



发现天然的富矿后,老夫欣喜若狂,为此加班到深夜3点,进一步分析了演员的身高、体重、籍贯和星座。


话不多说,直接看结构:

<div class="tn-box-content tn-widget-content tn-corner-bottom">
       籍贯:辽宁省沈阳市沈河区<br>
       身高:165cm/5.4英尺<br>
       体重:46kg/101磅<br>
       职业:演员,歌手<br>
      生日:1981-07-17<br>
      星座:巨蟹座<br>
      性别:女<br>
      血型:b型<br>
      三围:<br>                                div>


5、分析共同出演的电视剧


同样地,上词云。

《延禧攻略》当仁不让,高居首位。同时有额外发现,就是很多大火的电视剧《凤囚凰》《朝歌》《我们正年轻》《长歌行》等。


6、出玫瑰图,看个人信息


直接上图,不说话:


从来没有无缘无故的爱,也没有无缘无故的恨。一部热播剧的背后是几百个演员的艰辛付出和刻苦修炼。愿生活多姿,但你得足够努力!


- The End -

「若你有原创文章想与大家分享,欢迎投稿。」

加编辑微信ID,备注#投稿#:

程序 丨 druidlost  

小七 丨 duoshangshuang

Gitchat重磅推出的免费电子书。作者刘鹏老师现任科大讯飞副总裁、消费者事业群副总裁,兼任大数据研究院院长。4万字内容,说学逗唱,揭秘互联网与职场的湿暗后厨。精彩纷呈,免费领取~


上期精彩内容


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/oUQ3qDz8t0
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/24137
 
473 次点击