【python】写了个豆瓣电影短评词云生成
学python半年了在吾爱白嫖挺久了
今天写了个程序
还没来得及做异常处理
有什么bug或可以优化的地方欢迎指出
谢谢各位!
上源码
import requests,re,os,time
import jieba.posseg as peg
from wordcloud import WordCloud
print('''
本程序源码发布在www.52pojie.cn上
原创作者:麦田孤望者 (UID: 910954)
转载请注明出处
''')
time.sleep(1)
os.system('cls')
movie_name_input = str(input('请输入电影名\n').encode('utf-8'))[:-1].replace('\\x','%')#将输入的电影名转换为utf-8编码并将\x替换为网址中的%
url = 'https://movie.douban.com/j/subject_suggest?q='+movie_name_input
res = requests.get(url)
index_list = []
movie_list = []
choice_list = res.json()
for index,i in enumerate(choice_list):#电影候选项
print(index,i['title'],'年份:'+i['year'])
index_list.append(index)
movie_list.append(str(i['title']+' 年份:'+i['year']))
num_asw = input('请输入对应电影的序号 ---')
for i in index_list:
if num_asw == str(i):
print('您的选择是\n',movie_list)
a = i#确定选择(用i的话出了循环i就是5)
movie_url = '/'.join(choice_list['url'].split('/')[:-1])
res = requests.get(movie_url)#短评页面
score_get = re.findall(re.compile('<div class="rating_self clearfix" typeof="v:Rating">(.*?)</div>\n<div class="ratings-on-weight">',re.S),res.text)#所有短评爬取
score = re.findall(re.compile('<strong class="ll rating_num" property="v:average">(.*?)</strong>',re.S),score_get)+'分'#评分
scored_people_num = re.findall(re.compile('<span property="v:votes">(.*?)人评价',re.S),score_get).replace('</span>','')+'人评价'#评分人数
print(score,scored_people_num)
def short_messege():#短评10页
global movie_url
global movie_list
messege_list = []
adj_list1=[]
adj_list = []
for x in range(10):#10页短评
res = requests.get(movie_url+'/comments?start={}&limit=20&sort=new_score&status=P'.format(str(x*20)))
messege_get = re.findall(re.compile('<div class="mod-bd" id="comments">(.*?)div class="aside"',re.S),res.text)
for i in re.findall(re.compile('<span class="short">(.*?)</span>',re.S),messege_get):
messege_list.append(i)
os.system('cls')
for i in messege_list:#每一句短评分词
words=peg.cut(i)
for word,flag in words:
if flag == 'a':
adj_list1.append(word)#提取形容词
#去重
for item in adj_list1:
if item not in adj_list:
adj_list.append(item)
wordcloud=WordCloud(font_path="C:/Windows/Fonts/STXINWEI.TTF",
background_color="white",width=600,
height=300,max_words=500).generate(' '.join(adj_list1))#这里用的是没去重的形容词列表,生成词云图需要权重所以就用的没去重的
#生成图片
image=wordcloud.to_image()
#显示图片
image.show()
wordcloud.to_file('《{}》影评词云图.png'.format(movie_list.split(' ')))
print(' '.join(adj_list))#输出所有形容词(去重版本)
input()#防止运行结束后窗口消失 需要用户有操作才会关闭此窗口
#print(adj_list1)
short_messege()
#本来是想再弄个影评爬虫...但是...弄不动了...[笑cry]
如需运行,本程序用来requests,jieba和wordcloud三个第三方库,要运行请自行下载
谢谢分享 随便学习源码 谢谢楼主分享! 谢谢分享,期待更多更好的!加油! 请问版主,这个jieba库是什么库啊 流星下的梦 发表于 2019-10-18 19:10
请问版主,这个jieba库是什么库啊
一个中文分词库,可以把一段文本切成一个个词汇,返回一个列表
页:
[1]