最近看了一部电影《绣春刀》,里面的剧情感觉还不错,本文爬取的是绣春刀电影的豆瓣影评,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爬取豆瓣影评,生成词云图,只要简单一步即可实现。...相关推荐

  1. python爬取豆瓣影评生成词云的课程设计报告_简单爬取《小丑》电影豆瓣短评生成词云...

    导语 在前段时间看了杰昆菲尼克斯的小丑电影,心里很好奇大部分观众看完这部电影之后对此有什么评价,然后看了看豆瓣短评之后,觉得通过python把短评中出现最多的单词提取出来,做成一张词云,看看这部电影给 ...

  2. 图书管理系统python代码课程设计报告_python代码实现图书管理系统

    本文实例为大家分享了python代码实现图书管理系统的具体代码,供大家参考,具体内容如下 图书管理系统 功能简介 添加图书时,图书ID不能重复,图书名可重复 删除,查询,修改功能,输入图书名之后提供所 ...

  3. python实现通讯录功能课程设计报告_Python实现通讯录功能

    说实话,第一次写这么长的Python代码,期间遇到了很多问题,但是,最终还是完成了,花了我一天半的时间. 该程序实现了用户的增,删,改,查,主要用到sqlite3模块.对于该模块的知识点,请查看我的另 ...

  4. python猜单词游戏实验原理_猜单词游戏课程设计报告

    告 一 . 程 序 功 能 一个猜单词游戏.两人进行游戏时,由一个玩家给出一个单词, 在人与计算机游戏时候, 由计算机给出一个单词, 另一个玩家根据组 成单词的字母个数猜出单词,猜的次数可以指定,若猜 ...

  5. python学生考勤管理系统设计_学生考勤管理系统课程设计报告1

    一.需求分析 功能需求: 1 .录入学生的缺勤记录: 2 .修改某个学生的缺勤记录: 3 .查询某个学生的缺勤情况: 4 .统计某段时间内,缺勤学生学号及缺勤次数,按缺勤权值统计学生的负分值,并能进行 ...

  6. 计算机程序数据随机变化,计算机程序编程课程设计报告(马尔可夫链算法生成随机可读文本)...

    <计算机程序编程课程设计报告(马尔可夫链算法生成随机可读文本)>由会员分享,可在线阅读,更多相关<计算机程序编程课程设计报告(马尔可夫链算法生成随机可读文本)(15页珍藏版)> ...

  7. python贪吃蛇代码课程设计_c语言课程设计之贪吃蛇代码及思路 c语言课程设计报告之贪吃蛇...

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8846529.html 注:本文档需与c语言课程设计之贪吃蛇文档配套使用.c语言实现贪吃蛇代码可 ...

  8. 提升C语言程序运行效率 马尔可夫,计算机程序编程课程设计报告(马尔可夫链算法生成随机可读文本).doc...

    PAGE 1 计算机程序编程课程设计报告 (马尔可夫链算法生成随机可读文本) 引言: 马尔可夫链的数学背景: 马尔可夫链,因安德烈?马尔可夫(A.A.Markov,1856-1922)得名 ,是数学随 ...

  9. 【lidar】基于YOLO的3D目标检测(激光雷达点云)课程设计

    基于YOLO的3D目标检测(激光雷达点云)课程设计 代码+数据集下载地址:下载地址

最新文章

  1. OC高效率52之理解消息转发机制
  2. memcache运行机制(转)
  3. awk命令扩展使用操作
  4. 《复杂》读书笔记(part5)--复杂性度量
  5. 【转载】Linux关机命令详解
  6. sdut 2074 区间覆盖问题(贪心)
  7. html头部中各式各样的meta
  8. STM32官方固件库
  9. 走,去抖音上发财!抖音承诺未来一年要帮一千万创作者赚到钱
  10. C++基础与深度解析第八章:动态内存管理
  11. Code-First Development with Entity Framework 4
  12. Java多线程(一)——多线程实现方法和生命周期
  13. 解读Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (2)
  14. LwIP 协议栈之 udp 协议解析
  15. java私塾设计模式_Java私塾:研磨设计模式 之 访问者模式(Visitor)
  16. Eighth season eighth episode,Monica got a stripper in her bachelorette party??????
  17. HTML网页上播放AVI视频代码示例
  18. 重拾Java基础知识:枚举
  19. 解决 java poi 导出Excel 无法打开问题
  20. 到底什么是云原生(Cloud Native)?什么是CNCF(Cloud Native Computing Foundation)

热门文章

  1. 这一年又是稀里糊涂地度过了
  2. QPainter 画扇形
  3. linux plt.show不显示图片,解决matplotlib库show()方法不显示图片的问题
  4. 7种超轻量级的Linux发行版,希望能够帮助你找到适合自己的操作系统
  5. 小步快跑是这样玩的(下)
  6. 全民wa矿小程序源码
  7. STL容器底层数据结构
  8. php 干扰曲线,曲线干扰控制
  9. 女孩子的试炼html5魔塔
  10. 用iLO在惠普服务器安装exsi6.5