python爬取豆瓣影评生成词云的课程设计报告_Python爬取豆瓣影评,生成词云图,只要简单一步即可实现。...

最近看了一部电影《绣春刀》,里面的剧情感觉还不错,本文爬取的是绣春刀电影的豆瓣影评,1000个用户的短评,共5W多字。用jieba分词,对词语的出现频率进行统计,再通过wordcloud生成词云图。

今天和小伙伴们一起梳理下具体实现的流程,具体源代码已经上传到NLP小白 公众号中,发送“词云图”,即可获取源代码。

先上图为敬,看看豆瓣的网友评论侧重哪个方面。PS:词语出现的频率越多,字体越大

具体流程如下

一、自动化爬取 豆瓣影评

第一步 安装selenium 这是一个自动化测试工具,需要浏览器来配合使用

pip install selenium

第二步 下载 ChromeDriver 这是谷歌浏览器的驱动与 selenium 一起配合使用

找到你chrome 谷歌浏览器的对应的版本驱动 下载即可,本人用的是最新版,即红框位置

解压后 把 chromedriver.exe放到 Python的Scripts目录中即可,本人用的是Anaconda ,所以直接放入Scripts 文件。

安装环境准备好了之后,就可以进行 代码 测试 了。

import time

from selenium import webdriver

movie_url="https://movie.douban.com/subject/24745500/comments"

#绣春刀的评论界面

brower = webdriver.Chrome()

brower.get(movie_url)#启动chrome 浏览器 并跳转到 movie_url 网址

运行即启动chrome浏览器

由于豆瓣用户不登陆只能爬取短评会有限制,所以我们进行用户登录

右击chrome 选择审查元素,查看网页代码的结构

具体代码:

brower.find_element_by_class_name("nav-login").click()

#找到登录按钮 进行自动登录

time.sleep(1) #延时1秒

点击后跳转到登录界面

brower.find_element_by_class_name("account-tab-account").click()

#默认是手机号登录,切换成账号密码登录

time.sleep(1)

找到 用户名和密码的框 对应的ID ,进行自动输入

user_name = 'admin' #这里替换成你的豆瓣用户名

password = 'admin123' #这里替换成你的密码

brower.find_element_by_id("username").clear()

#输入前清空下 用户名

brower.find_element_by_id("username").send_keys(user_name)

#输入用户名

brower.find_element_by_id("password").clear()

brower.find_element_by_id("password").send_keys(password)

当按钮的class 和id 都不好定位的时候 可以选择 copy selector

代码:

brower.find_element_by_css_selector("#account > div.login-wrap > div.login-right > div > div.account-tabcon-start >div.account-form > " "div.account-form-field-submit > a"

"div.account-form-field-submit > a").click()

登录后 出现 滑块验证 人为验证下 就行了,下一节 再细讲如何 自动进行滑块验证

进入短评界面后 找网页布局的规律,评论都在class=”comment” 里面的class=“short”中

然后开始爬取50页的短评,存入short[] 中

代码如下:

#后面开始 读取评论信息

n = 1 #页数

count = 0 #评论数目

i = 50 #设置要爬取的页面总数

short=[]

while True:

try:

results = brower.find_elements_by_class_name('comment')

for result in results:

comment = result.find_element_by_tag_name('p').text #评论内容

short.append(comment + u'\n')

count += 1

print(u"查找到第%d个评论" % count)

brower.find_element_by_class_name('next').click() #点击下一页

print(u'第%d页查找完毕!' % n)

n += 1

time.sleep(5)

i -= 1

print(i)

if (i < 1):

break

except Exception as e:

print(e)

最后短评都存储到short中了,接下来进行写入 xiuchundao.txt中

with open("xiuchundao.txt","w+",encoding='utf-8') as f:

# 把评论 写入xiuchundao.txt

for q in short:

f.write(q) #自带文件关闭功能,不需要再写f.close()

至此,短评内容都已经存在txt中了

二、生成 词云图

首先 安装下 需要用的jieba 分词库和WordCloud​

相信小伙伴们经常遇到 pip安装失败,大部分原因都是因为,直接pip 下载的软件源是国外的,下载速度很慢,经常会下载断掉。为了解决这个问题,我们可以用国内的镜像地址。

阿里云 http://mirrors.aliyun.com/pypi/simple

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple

豆瓣(douban) http://pypi.douban.com/simple

清华大学 https://pypi.tuna.tsinghua.edu.cn/simple

中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple

1、临时使用国外镜像源,添加“-i”参数

安装 jieba 分词库

pip install -i http://pypi.douban.com/simple/ jieba

安装 WordCloud

pip install -i http://pypi.douban.com/simple/ WordCloud

2.具体生成词云图代码

​from PIL import Image

from wordcloud import WordCloud, ImageColorGenerato

import matplotlib.pyplot as plt

import numpy as np

import jieba

def GetWordCloud():

path_txt = 'xiuchundao.txt' #刚才的评论文件

path_img = "am3.png" #背景图片

f = open(path_txt, 'r', encoding='UTF-8').read()

background_image = np.array(Image.open(path_img))

#结巴分词,生成字符串,如果不通过分词,无法直接生成正确的中文词云

#Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

cut_text = " ".join(jieba.cut(f))

wc = WordCloud(

#设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的

font_path="C:/Windows/Fonts/STXINGKA.TTF",#生成云图的字体

width=1000,

height=1200,#生成图片的大小

min_font_size=3,

background_color="black",

# mask参数=图片背景,必须要写上,另外有mask参数再设定宽高是无效的

mask=background_image,

).generate(cut_text)

#生成颜色值

image_colors = ImageColorGenerator(background_image)

#下面代码表示显示图片

plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")

plt.axis("off")

plt.show()

wc.to_file("shuchu.jpg") #生成图片保存在shuchu.jpg

if __name__ == '__main__':

GetWordCloud()

运行效果如图

小伙伴们 这整个流程走下来 是不是很简单呢。详细源代码和背景图片,公众号,回复 “词云图”,即可获取。赶快来试试吧,下一期,推送,如何爬取bi站的弹幕,生成词云图。期待你们的关注,有啥问题都可以在文章后面,给我留言。

你可能感兴趣的:(python爬取豆瓣影评生成词云的课程设计报告_Python爬取豆瓣影评,生成词云图,只要简单一步即可实现。...)