最近大火的电视剧《延禧攻略》已宣告大结局,除了剧情走心,演员的那些头花啊头饰啊,戏服也都精致无比。本文利用Python抓取互联网上演员的部分数据,分析演员的姓名、星座、身高、体重和籍贯等信息,利用bs+pyecharts绘制词云和玫瑰图。
为什么这么闲?
《延禧攻略》可以说是于正的洗白之作,没有特别的戏说,也没有异想天开的改编,在基本尊重历史事实的基础上,通过魏璎珞(令妃)的视角窥探整个后宫的众生相。可以称得上“管中窥豹,可见一斑”。
某位哲人说过:一个电视剧这么火,背后一定有原因。背后绝对有JQ。又有哲人说过:内因很重要。为此决定现学现卖,抛砖引玉地分析一下演员背后的因素。
1、分析网页
step1:分析网页内容
感谢电视指南网的数据支撑。
通过浏览网页,发现我们所需的演员信息:
step2:分析网页数据格式
通过网页格式,可知所需的信息
秦岚
为此,可利用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中:
发现天然的富矿后,老夫欣喜若狂,为此加班到深夜3点,进一步分析了演员的身高、体重、籍贯和星座。
话不多说,直接看结构:
籍贯:辽宁省沈阳市沈河区
身高:165cm/5.4英尺
体重:46kg/101磅
职业:演员,歌手
生日:1981-07-17
星座:巨蟹座
性别:女
血型:b型
三围:
5、分析共同出演电视剧
同样地,上词云。
《延禧攻略》当仁不让,高居首位。同时有额外发现,就是很多大火的电视剧《凤囚凰》《朝歌》《我们正年轻》《长歌行》等。
6、出玫瑰图,看个人信息
直接上图,不说话:
从来没有无缘无故的爱,也没有无缘无故的恨。一部热播剧的背后是几百个演员的艰辛付出和刻苦修炼。愿生活多姿,但你得足够努力!
欢迎关注个人公众号:科学小镇。