导语

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

抓取数据

首先刚开始的时候 ,是通过requests去模拟抓取数据,发现短评翻页翻到20页之后就需要登录豆瓣用户才有权限查看,所以打算通过使用selenium模拟浏览器动作自动化将页面中的数据爬取下来,然后存储到特定的txt文件,由于没打算做其他的分析,就不打算存放到数据库中。

关于selenium和chromedriver安装

关于流行的自动化测试框架selenium的工作原理,以及selenium和chromdriver对应的版本安装就不详细赘述,有兴趣的同学可以参考:

https://blog.csdn.net/weixin_43241295/article/details/83784692

分析豆瓣登录页面用户登录流程

从页面上看来,大概流程就是点击导航栏中的密码登录,然后输入用户名和密码,点击登录按钮,至于看网上一些豆瓣爬虫时会出现的验证图片,我没有遇到过,我直接登录就OK了,所以接下来就需要通过selenium模拟整个登录过程。

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

import time

def crawldouban():

name = "你的用户名"

passw = "你的密码"

# 启动chrome

options = Options()

options.add_argument('--headless')

options.add_argument('--no-sandbox')

browser = webdriver.Chrome(executable_path="/usr/bin/chromedriver", options=options)

# 获取登录网址

browser.get("https://accounts.douban.com/passport/login")

time.sleep(3)

# 登录自动化操作流程

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

form = browser.find_element_by_class_name("account-tabcon-start")

username = form.find_element_by_id("username")

password = form.find_element_by_id("password")

username.send_keys(name)

password.send_keys(passw)

browser.find_element_by_class_name("account-form-field-submit").click()

time.sleep(3)

获取用户评论

接下来就是,获取页面中的评论,然后将评论存储到指定的文本文件中,(我就不模拟查询电影然后,跳转到短评的整个过程了),直接从拿到的短评页面地址出发,不断点击下一页然后不断重复提取评论,写入的操作。

browser.get("https://movie.douban.com/subject/27119724/comments?status=P")

comments = browser.find_elements_by_class_name("short")

WriteComment(comments)

while True:

link = browser.find_element_by_class_name("next")

path = link.get_attribute('href')

if not path:

break

# print(path)

link.click()

time.sleep(3)

comments = browser.find_elements_by_class_name("short")

WriteComment(comments)

browser.quit()

# 将评论写入到指定的文本文件

def WriteComment(comments):

with open("comments.txt", "a+") as f:

for comment in comments:

f.write(comment.text+" \n")

代码解析:抓取的代码没啥好讲的,就是找到classname是'short‘的元素,获取里面的文本内容写到指定文本文件即可,里面主要有个循环判断是否还有下一页,通过获取下一页的超链接,当获取不到时证明已经在最后一页了。

数据分词,生成词云图

大概讲讲思路吧,我这里的数据处理比较粗糙,没有结合pandas+numpy,我将爬取下来的数据,简单的将换行符切割然后组成新的数据,然后通过jieba分词,将新的数据进行分词,最后再读取本地的一个停顿词文件,获取一个停顿词列表。生成词云指定停顿词,以及字体文件,背景颜色等,再把词云图片保存到本地。

from wordcloud import WordCloud

from scipy.misc import imread

import jieba

# 处理从文本中读取的内容

def text_read(file_path):

filename = open(file_path, 'r', encoding='utf-8')

texts = filename.read()

texts_split = texts.split("\n")

filename.close()

return texts_split

def data_handle(picture_name):

# 读取从网站上爬取下来的数据

comments = text_read("comments.txt")

comments = "".join(comments)

# 分词, 读取停顿词

lcut = jieba.lcut(comments)

cut_text = "/".join(lcut)

stopwords = text_read("chineseStopWords.txt")

# 生成词云图

bmask = imread("backgrounds.jpg")

wordcloud = WordCloud(font_path='/usr/share/fonts/chinese/simhei.ttf', mask=bmask, background_color='white', max_font_size=250, width=1300, height=800, stopwords=stopwords)

wordcloud.generate(cut_text)

wordcloud.to_file(picture_name)

if __name__ == "__main__":

data_handle("joker6.jpg")

这是我自己扣的一张图片作为背景:

最终效果图:

总结

写爬虫到数据分析,大概有思路以及整理需要用到的工具大概花了两个晚上。整体来说,还是一些比较浅显易懂的东西,对于有关爬虫大规模并发采集 以及数据分析等内容还在学习,记录下自己学习过程还是蛮有趣的。

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

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

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

  2. python俄罗斯方块课程设计报告_用python实现俄罗斯方块

    !/usr/bin/python -- conding:utf-8 -- from tkinter import * import time import threading import rando ...

  3. python基于svm项目+课程设计报告_基于机器学习的脑电病理诊断

    是新朋友吗?记得先点蓝字关注我哦- (图片来自于网络) 1 引言 将机器学习方法应用于脑电信号的自动分析,特别是在基于脑电信号的临床诊断领域,因其巨大的应用前景而引起了广泛的兴趣.例如,它是检测和预测 ...

  4. 图书管理系统python代码课程设计报告_数据结构图书管理系统课程设计报告

    1 一.设计题目与要求 [ 问题描述 ] 设计一个计算机管理系统完成图书管理基本业务. [ 基本要求 ] ( 1) 每种书的登记内容包括书号.书名.著作者.现存量和库存量: ( 2) 对书号建立索引表 ...

  5. python学生信息管理系统课程设计报告_学生信息管理系统课程设计报告

    一. 引言(简要说明设计题目的目的.意义.内容.主要任务等) 1 实验目的 在全面掌握< C 语言程序设计>课程的知识点的前提下,培养了我们分析实际问题的能力,并能够自己编写程序 实现对实 ...

  6. python小游戏课程设计报告_贪吃蛇游戏课程设计报告

    贪吃蛇游戏程序设计 一.课程设计任务 贪吃蛇小游戏程序设计 二.设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固 C 语言中所学的知识,合理的运 用资料,实现理论与实际相结合. ( 1 ) . ...

  7. python五子棋课程设计报告_算法课程设计:使用Python完成可视化的五子棋AI

    from enum import IntEnum import pygame from pygame.locals import * import copy import time version = ...

  8. python五子棋课程设计报告_五子棋课程设计报告

    智力 ,而且富含 哲理 ,有助于修身养性 . 五子棋相传起源于四千多年前的尧帝时期,比 围棋 的历史还要悠久,可能早在 " 尧造围棋 " 之前, 民间就已有五子棋游戏 . 有关早期 ...

  9. python基于svm项目+课程设计报告_单片机课程设计教学模式研究

    单片机课程设计教学模式研究 摘要:在分析单片机课程设计现状的基础上,提出将先进的CDIO工程教育理念应用到单片机课程设计教学中,对课程设计的时间安排.选题.组织实施.考核等方面进行改革与创新,构建新的 ...

最新文章

  1. RSA加密传输代码示例
  2. Springboot+Mybatis+Durid
  3. Java: 面向对象程序设计(上)
  4. ionic项目相关的操作命令
  5. 使用canvas实现数据可视化
  6. 【机器学习】一文读懂异常检测 LOF 算法(Python代码)
  7. OpenGL伽玛校正测试
  8. python opencv 识别角度_OpenCV入门之获取图像的旋转角度
  9. HTML small元素
  10. mysql创建数据库时使用sql/wordbench使主键(primary key)自增
  11. Picasso 图片库图片渐显效果的实现
  12. pytorch-minst手写字符识别实战
  13. iOS 中文转拼音 多音字处理
  14. 【高频电子线路】[笔记]第1章 绪论
  15. 【大学物理】设计性实验报告
  16. 3dmax给模型添加渐变背景有哪些方法
  17. 【网络】TOE、RDMA、smartNIC 是什么和区别|DPU
  18. 单、多分支结构的应用(有点复杂)
  19. 实现用户在网页中给我的QQ邮箱发邮件
  20. Java中实现图片的上传

热门文章

  1. css flexbox模型_Flexbox-Ultimate CSS Flex速查表(带有动画图!)
  2. 111_Power Pivot 24小时维度:累计、同比、环比相关
  3. python实现一个简单的项目_Python小项目四:实现简单的web服务器
  4. 关于Oxygen版 Eclipse JSP或html 中option标签使用c:if报错的问题
  5. 赶在520之前,程序员如何用Python送上最特别的“我爱你”表白
  6. 问题记录 | SpringMVC整合jackson版本问题
  7. 解谜元宇宙元年的十个疑问
  8. CSS hack技巧大全 案例演示
  9. ExtJS的extend(Ext Designer的使用)
  10. 4.3.1 jQuery基础(2)