百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Python带你起底乘风破浪的姐姐们

toyiye 2024-06-21 12:05 12 浏览 0 评论

码农前段时间写了很多关于股票、报表自动化的内容,吸引的大批的直男粉丝,这是公众号后台的粉丝性别分布图:

众多的MM粉丝表示看不懂码农的帖子,为了改变这种现状,码农决定写点其他内容的帖子,比如说今天这篇关于娱乐八卦的帖子,希望各位MM看官喜欢。

想到写这个主题,是因为最近正好有一部吃瓜综艺在芒果台大热,那就是这部《乘风破浪的姐姐》。码农今天带大家用python去看看谁是你最喜欢的小姐姐~

豆瓣评论

码农从豆瓣上看了下网友对这部综艺的评分,总体评分8.4也还算不错。

那看看推荐的网友们都有些啥评价,码农祭出Python爬虫大杀器selenium来,爬了200条评论,然后我们看看网友的关键词都有些啥。

没想到啊,大家讨论最多的明星是星女郎张雨绮。

艺人百科数据大PK

下面,码农通过从百度百科下载了30位参赛女艺人的相关信息,通过数据可视化的方式了解下这些姐姐们的情况。

先看下年龄分布,大部分的姐姐都是集中在30-40岁,其中30-35岁之间的占了40%。

接下来,看下大家的星座分布。白羊座是最多的,其次是水瓶和金牛。

再看下血型分布,百度百科真是啥都有。O型血果然是大众血型。

接下来看看他们的家乡,果然芒果台还是请湖南的明星居多。万茜、刘芸、孟佳、沈梦辰、阿朵都是湖南人。

最后是身高和体重分布,大家的平均身高是166.54cm,平均体重是47.7Kg。

到底哪几个小姐姐最终会成团,谁又是你心目中的C位,快来码农的公众号留言吧。

如果你还没有看过瘾,那就自己动手去爬更多的数据去看吧。码农会贴出部分代码,供各位看官参考哟。


Python 部分代码

1.豆瓣评论爬取

def get_douban_comment(page):
    browser.get("https://movie.douban.com/subject/34894589/collections?start="+str(page))
    browser.find_element_by_class_name('sub_ins')
    df1=browser.find_element_by_class_name('sub_ins')
    df2=df1.find_elements_by_tag_name('table')
    comment=[]
    star=[]
    for i in df2:
        if len(i.text.split('\n'))==3:
            comment.append(i.text.split('\n')[2])
        else:
            comment.append('')

        x=i.find_element_by_class_name('pl')
        try:
            star.append(x.find_element_by_tag_name('span').get_attribute('title'))
        except:
            star.append('')
    print("https://movie.douban.com/subject/34894589/collections?start="+str(page)+' 解析完成')
    print('解析评论%s条'%len(comment))
    return comment,star

Cmt=[]
Star=[]

for i in range(10):
    a,b=get_douban_comment(i*20)
    for i in a:
        Cmt.append(i)
    for j in  b:
        Star.append(j)

df=pd.DataFrame({'star':Star,'Comment':Cmt})
df.to_excel(r'e:/cfpl/comment.xls',index=False)

2.百度百科爬取代码

from selenium import webdriver
import pandas as pd
import time
import pickle
import os

#获取艺人清单和百度百科链接
def get_name_list():
    browser = webdriver.Chrome(r'chromedriver.exe')
    browser.get("https://baike.baidu.com/item/%E4%B9%98%E9%A3%8E%E7%A0%B4%E6%B5%AA%E7%9A%84%E5%A7%90%E5%A7%90/49998987?fr=aladdin#3") 

    a=browser.find_elements_by_tag_name('table')
    b=a[1].find_elements_by_tag_name('tr')
    list1=[]
    for i in b:
        c=i.find_elements_by_tag_name('td')
        if len(c)==4:
            for i in c:
                list1.append(i)

    name=[]
    link=[]
    for i in list1:
        try:
            k=i.find_elements_by_tag_name('a')[0]
            print('艺人: %s,百科链接: %s' %(k.text,k.get_attribute('href')))
            name.append(k.text)
            link.append(k.get_attribute('href'))
        except:
            pass
    browser.quit()
    return name,link

name,link=get_name_list()
f=open(r'E:/cfpl/name.txt','w')
for i in name:
    f.write(i+'\n')
f.close()


def get_data(link,name):
    browser = webdriver.Chrome(r'chromedriver.exe')
    browser.get(link)
    b=browser.find_element_by_class_name("main-content")
    c=b.find_elements_by_class_name('basic-info')[0]

    t1=[]
    t2=[]
    for i in c.find_elements_by_tag_name('dt'):
        t1.append(i.text)
    for i in c.find_elements_by_tag_name('dd'):
        t2.append(i.text)
    d={}
    for i in range(len(t1)):
        d[t1[i]]=t2[i]

    file='E:/cfpl/'+name+'.pkl'
    f=open(file,'wb')
    pickle.dump(d,f)
    f.close()
    print('%s pkl write down'%name)
    browser.quit)()

#下载数据
for i in range(len(name)):
    get_data(link[i],name[i])

3.可视化代码--饼图

#年龄可视化
data['年龄']=[int((datetime.datetime.now()-i).days/365.25) for i in data['出生日期']]
age_cut=[25,30,35,40,45,50]
age_label=['25-30','30-35','35-40','40-45','45-50']
data['年龄段']=pd.cut(data['年龄'],age_cut,labels=age_label)
from pyecharts import Pie
pie=Pie('年龄分布')
df1=data['年龄段'].value_counts()
df1=df1[df1.values>0]
pie.add('',df1.index,df1.values,is_label_show=True,is_legend_show=False,radius=[40,75])
pie.render(r'e:/cfpl/年龄分布.html')
pie

4.可视化代码--柱状图

#星座可视化
from pyecharts import Bar
bar1=Bar('星座分布')
df2=data['星座'].value_counts()
bar1.add('',df2.index,df2.values,is_label_show=True,is_legend_show=False,mark_point=['max'])
bar1.render(r'e:/cfpl/星座分布.html')
bar1

5.可视化代码--地图

df6=data['出生地所在省市'].value_counts()
from pyecharts import Map
map=Map('出生地分布')
map.add('',df6.index,df6.values,is_visualmap=True,visual_range=[0,5],is_lagend_show=True)
map

6.可视化代码--词云

import jieba
from jieba import posseg as psg
from collections import Counter
def nlp(file):

    #导入停用词库
    stopwords = [line.strip() for line in open(r'cn_stopwords.txt', 'r', encoding='utf-8').readlines()]  
    name=[]
    f=open(r'e:/cfpl/name.txt')
    for i in f:
        name.append(i.strip())
    f.close()
    for i in name:
        jieba.add_word(i,tag='nr')
    t=open(file).read()
    #不需要考虑的词性
    nowords = ['x','uj','ul', 'p','d', 'v','zg','m','ug','i', 'f', 'ad','nz', 'r', 'r', 'ns','q','t','c']
    words =[x.word for x in psg.cut(t) if len(x.word)>=2 and (x.flag) not in nowords and x.word not in stopwords]
    word_count = Counter(words)
    from pyecharts import WordCloud
    wc=WordCloud('')
    wc.add('',list(word_count.keys()),list(word_count.values()),shape='circle')
    return wc

nlp(r'e:/cfpl/力荐.txt')

?

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码