码农前段时间写了很多关于股票、报表自动化的内容,吸引的大批的直男粉丝,这是公众号后台的粉丝性别分布图:
众多的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')
?
在如今这个大数据时代,财务状况的实时掌握对于每个人来说都至关重要。无论是投资决策、理财规划,还是对个人资产的管理,都需要及时、准确的数据支持。为了满足这一需求,"查询所有星座今日财务状况总览"的API接口应运而生。通过这个接口,您可以轻松获取所有星座在今日的财务状况总览,帮助您更好地把握财务趋势。
"查询所有星座今日财务状况总览"是一个基于RESTful API的财务数据查询接口。它采用了HTTP协议,通过GET请求获取所有星座在今日的财务状况总览。接口返回的数据格式为JSON,包含以下字段:
下面是一个使用Python语言调用"查询所有星座今日财务状况总览" API接口的示例代码:
python复制代码
import requests | |
import json | |
def get_all_constellations_today_finance_overview(): | |
url="https://www.wapi.cn/api_detail/73/185.html" | |
params={ | |
"date": "2023-07-06" | |
} | |
response=requests.get(url, params=params) | |
data=response.json() | |
return data['finance'] | |
# 测试代码 | |
result=get_all_constellations_today_finance_overview() | |
print(json.dumps(result, indent=4)) |
这段代码首先导入了requests和json库,然后定义了一个名为get_all_constellations_today_finance_overview的函数。该函数通过GET请求访问"查询所有星座今日财务状况总览" API接口,并传递了查询日期作为参数。接口返回的JSON数据被解析为Python字典,并返回了其中的"finance"字段的值。在测试代码中,我们调用了这个函数并打印了结果。
在使用"查询所有星座今日财务状况总览" API接口时,有几个注意事项需要留意:
头条创作挑战赛#
本文同步本人掘金原创文章:https://juejin.cn/post/7160474897561419789
什么?
文言文可以编码?
服了~
文言文语言的开发者是来自卡内基梅隆大学的黄令东,并且当时仅是一名大四的学生。文言文编程是利用NLP技术,将文言文语法转换为 Javascript 或 Python 语法,从而进行编译与运行。技术难度巨大。
大佬,请收下俺的膝盖。
关于基本语法,度娘和谷歌上一搜一大把。这里我们简单看看:
吾有一言。曰「「己所不欲,勿施於人」」。書之。
复制代码
则有:
var stringVariable='己所不欲,勿施於人';
console.log(stringVariable);
复制代码
对号入座。吾有一言。表明要定义一个字符串类型的变量。曰「「己所不欲,勿施於人」」表示将值己所不欲,勿施於人赋值给变量。書之这里的之代表前面定义的变量。書表明要写下来。所以書之类比 Javascript 中的打印 console.log(变量)。
更多的内容,可以参照 开源软件 - 文言文编程 或者其他介绍的站点。资源多多,这里不进行赘述。
好了,这里假设我们已经弄懂了基本的语法。那么我们来编写一个成品 - 星座效果。成品静态效果如下图:
因为俺没有找到文言文支持 class 类的写法。这里我通过文言文的另一种写法施实现:
施「(_=> {
class 类名 {
constructor() {
this.属性=属性值;
}
方法名() {
}
}
})」
复制代码
其他内容的实现方式尽量采用文言文的语法形式。不然,整个项目,俺可以通过一个简单的 施 字完成。那真是简单乎矣。
比如取色:
疏曰。 主色調
吾有一物。名之曰「主色調」。
昔之「主色調」之「「紅調值」」者。今零是矣。
昔之「主色調」之「「綠調值」」者。今二百五十五是矣。
昔之「主色調」之「「藍調值」」者。今二百五十五是矣。
注曰。 當前顏色
吾有一術。名之曰「獲取顏色」欲行是術。必先得一物。曰「當前顏色」。一數。曰「當前透明度」。
乃行是術曰。
吾有一數。夫「當前顏色」之「「紅調值」」。名之曰「當前紅」。
吾有一數。夫「當前顏色」之「「綠調值」」。名之曰「當前綠」。
吾有一數。夫「當前顏色」之「「藍調值」」。名之曰「當前藍」。
吾有一言。施「(_=> `rgba(${當前紅}, ${當前綠}, ${ 當前藍 }, ${ 當前透明度 })`)」。名之曰「當前透明度顏色」。
乃得「當前透明度顏色」。
是謂「獲取顏色」之術也。
疏曰。 星星顏色
吾有一言。施「獲取顏色」於「主色調」。於一。名之曰「青色」。
昔之「星星顏色」者。今「青色」是矣。
复制代码
上面代码,声明了主色调。然后声明了一个函数,该函数有两个参数 - 當前顏色 和 當前透明度 ,函数返回 rgba 的颜色。接着,我调用声明的函数獲取顏色,将返回值赋予变量星星顏色。
本文介绍的星座特效,也是已经实现了的功能,主要包含下面的几点:
具体的实现,读者可以查看下面的成品代码。
赠人玫瑰,手留花香。俺不要玫瑰,只要读者的一个举手之劳的赞~ 逃:)
https://code.juejin.cn/pen/7160145465692913672
*请认真填写需求信息,我们会在24小时内与您取得联系。