用代码生成炫酷的词云图—《你好,李焕英》

2023-11-10

最近比较火的电影《你好,李焕英》莫名戳中了大家的泪点,应用评论中的一句“妈妈永远比想象中的要爱我们”
虽然我没哭,但看大家都哭了,说明电影不在于多有深意,而是能引起大家共鸣的电影,才是好电影。
(完全瞎编的)

下面我们就来看一下《你好,李焕英》在豆瓣影评中都有哪些优质的评论以及出现最多的词是哪些。

1.确定数据所在的url

https://movie.douban.com/subject/34841067/comments?percent_type=h&limit=20&status=P&sort=new_score

在这里插入图片描述

2.发送网络请求

使用requests库发送网络请求,并看下他的文本内容。

url = 'https://movie.douban.com/subject/34841067/comments?status=P'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36"} 

response = requests.get(url=url,headers=headers)
print(response.text)

看一下抓取到的网页源码:
在这里插入图片描述

3.分析数据

使用xpath点位到你想要的数据,可以看到所有评论的定位为//span[@class='short']
备注:关于Google使用xpath定位的方法,可以参考这篇文章《谷歌Xpath-helper插件安装及使用》,特别方便哈哈。
在这里插入图片描述
于是,我们获取每条评论文本,使用text(),并获取所有影评,使用getall()函数。

html_data = response.text
selector = parsel.Selector(html_data)  # 转换数据类型
comments_list = selector.xpath("//span[@class = 'short']/text()").getall()
print(comments_list)

4.数据存储

将数据保存到txt中,注意把原始数据中的换行符替换掉,并且输入完一条评论后加个换行符。

with open('《你好!李焕英!》.txt',mode = 'a',encoding='utf-8') as f:
    for comment in comments_list:
        f.write(comment.replace('\n',''))
        f.write('\n')

5.爬取10页影评数据

通过分析发现每一页的地址只是start不一样且呈规律出现

https://movie.douban.com/subject/34841067/comments?percent_type=h&start=20&limit=20&status=P&sort=new_score
https://movie.douban.com/subject/34841067/comments?percent_type=h&start=40&limit=20&status=P&sort=new_score
https://movie.douban.com/subject/34841067/comments?percent_type=h&start=60&limit=20&status=P&sort=new_score

于是,我们写一个for循环来爬取10页影评

page_count = 0
for page in range(0,180,20):
    page_count += 1

    url = 'https://movie.douban.com/subject/34841067/comments?start={}&limit=20&status=P&sort=new_score'.format(page)
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36"}

    response = requests.get(url=url, headers=headers)

    html_data = response.text
    selector = parsel.Selector(html_data)  # 转换数据类型
    comments_list = selector.xpath("//span[@class = 'short']/text()").getall()
    print(comments_list)

    with open('《你好!李焕英!》.txt',mode = 'a',encoding='utf-8') as f:
        for comment in comments_list:
            f.write(comment.replace('\n',''))
            f.write('\n')

看一下效果,你也可以看到同级目录生成一个“《你好!李焕英!》.txt ” 文件。
在这里插入图片描述

6.生成词云库

打开刚才的txt,并使用jiaba库进行分词。这里需要现导入jiaba库,如果没有,就安装一下,pip install jiaba 很简单的

f = open('《你好!李焕英!》.txt',mode = 'r',encoding = 'utf-8')
txt = f.read()
txt_list = jieba.lcut(txt)
string1 = " ".join(txt_list)

设置词云图并制作,这里需要安装并导入wordcloud库

#词云图设置 
wc = wordcloud.WordCloud(width= 1000,
                         height = 800,
                         background_color = 'white',
                         font_path ='msyh.ttc',
                         scale = 15,
                         stopwords = set([line.strip() for line in open('cn_stopwords.txt',mode='r',encoding='utf-8').readlines()]))
#给词云图输入文字
wc.generate(string1)
#保存词云图
wc.to_file('output.png')

完整代码如下:

# -*- coding:utf-8 -*-
# @Time    : 2021/3/15 15:27
# @Author  : MTbaby
# @File    : my_movie.py
import requests
import parsel
import jieba
import wordcloud

page_count = 0
for page in range(0,181,20):
    page_count += 1
    print("======================正在爬取第{}页数据========================".format(page_count))
    url = 'https://movie.douban.com/subject/34841067/comments?start={}&limit=20&status=P&sort=new_score'.format(page)
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36"}
    response = requests.get(url=url,headers = headers)
    html_data = response.text
    selector = parsel.Selector(html_data) #转换数据类型
    comments_list = selector.xpath("//span[@class = 'short']/text()").getall()
    with open('《你好!李焕英!》.txt',mode = 'a',encoding='utf-8') as f:
        for comment in comments_list:
            f.write(comment.replace('\n',''))
            f.write('\n')


f = open('《你好!李焕英!》.txt',mode = 'r',encoding = 'utf-8')
txt = f.read()
txt_list = jieba.lcut(txt)
string1 = " ".join(txt_list)

wc = wordcloud.WordCloud(width= 1000,
                         height = 800,
                         background_color = 'white',
                         font_path ='msyh.ttc',
                         scale = 15,
                         stopwords = set([line.strip() for line in open('《你好!李焕英!》.txt',mode='r',encoding='utf-8').readlines()]))
#给词云图输入文字
wc.generate(string1)
#保存词云图
wc.to_file('output.png')

查看生成的云图:
在这里插入图片描述
创作不易,留下点爱心吧~~
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用代码生成炫酷的词云图—《你好,李焕英》 的相关文章

随机推荐

  • JS数组过滤 简单------->多条件筛选

    在前端部分完成筛选功能 一次拿到所有数据 然后根据条件筛选 通常情况下筛选是后台给接口 在数据量不大的情况下 也有人可能会遇到前端筛选这样的情况 这个是例子中的被筛选数组 var aim name Anne age 23 gender fe
  • 最强大脑(9-10)

    目录 第九季 团队冲击赛 乾坤魔方 运Q帷幄 光影残卷 光柱霓虹 六宫数局 双面拼图 索玛秘图 康斯迭代 第九季 淘汰赛 慧眼识金 连杆曲线 光点密钥 希尔伯特旋涡 移星掠形 星阵潜袭 明灯谜局 彩虹雪花 光图谜笼 战旗阵地 时间旅人 数字
  • [开发] 认证的几种方式简介

    LDAP 认证 LDAP 轻量级目录访问协议 是一种用于访问和维护分布式目录信息的开放标准协议 它最初由电子数据系统公司 Netscape 开发 现在被广泛用于企业和组织中的身份认证和授权管理 LDAP的目标是为不同类型的应用程序 如电子邮
  • 创作灵感打卡

    打卡 打卡 打卡 重要的事情说三遍 作为一个CSDN新手 目标就是 坚持下来 每日分享关于C语言知识 希望在CSDN平台上可以走的更远 今日刚刚发布几篇博客 兴趣大发 希望同僚可以给以鼓励 使得坚持下来
  • RPNet 分割

    46m https github com ooooverflow BiSeNet 网络好像比较大 无模型 https github com superlxt RPNet Pytorch solov2 还未开源 yolact map不到30
  • VS Code 配置C/C++环境 出现问题 could not find the task 'g++' / 'gcc'

    前言 由于新电脑未装VSCode C C 配置环境 刚好手头有些东西想在上面验证 于是开启安装之旅 耗时大概4h 最后还是拷了旧电脑的配置 修改过后才解决的问题 如果你是被标题 骗 进来的 请直接跳转到tasks json部分 推荐先序阅读
  • csu 1803 2016 2016湖南省赛 A

    Problem acm csu edu cn csuoj problemset problem pid 1803 vjudge net contest 161962 problem A Reference www cnblogs com w
  • Day【3】设计一个支持增量功能的栈

    原题链接 文章目录 思路 代码 用数组来模拟栈 思路 题目中已经确切的告诉了我们 数组中会放入多少个元素 这种情况并且只有添加操作 这种情况之下 使用数组模拟效率会更高一点 代码 用数组模拟栈 击败100 class CustomStack
  • 多链生态中的跨链桥是如何运行的?

    在以太坊升级之前 它网络拥堵 手续费高昂等问题逐渐难以满足人们的需求 因此 市场中出现了许多以太坊之外的公链 其中甚至不乏有一些号称 以太坊杀手 项目 尽管以太坊很快反应过来了 并开始对其自身进行升级优化 但一个多链的生态已然形成 在多链态
  • 牛客网 之 数列还原(数列的全排列算法)

    题目描述 牛牛的作业薄上有一个长度为 n 的排列 A 这个排列包含了从1到n的n个数 但是因为一些原因 其中有一些位置 不超过 10 个 看不清了 但是牛牛记得这个数列顺序对的数量是 k 顺序对是指满足 i lt j 且 A i lt A
  • 基于yolov5的物流托盘实时检测方法研究

    摘要 传统物流作业主要依靠人工操作叉车对托盘进行搬运 自动化程度低 工厂实际环境复杂多样 导致现有的托盘检测算法的模型复杂 耗时较长 无法同时达到准确性和实时性要求 难以实际运用 针对浙江某机械 搬运 设备有限公司下属的电动车工业园实际工厂
  • 基于Web日志挖掘的个性化推荐系统(附源码)

    个性化推荐系统 实现该系统主要是使用的编程语言主要是R 然后配合css在样式上进行一定优化 使用shiny开发的一款web程序 主要实现的核心功能是基于spark的ALS算法的课程个性化推荐系统 首页界面如下图所示 该系统中的所有课程名称
  • 低代码点亮普惠数字化转型之路,助力企业数字化转型实践

    在国家大力提倡下 新一代信息技术持续迭代 企业数字化转型被推到风口 现在步入了信息化时代 尤其是2022年 在十四五的政策规划下更是有利好前景 对于企业来说 低代码开发平台是一种通用的解决方案 成为了企业进行信息化管理的首选 现在 越来越多
  • 鸡啄米VS2010/MFC编程入门教程——学习2关于VS2010/MFC/VC/C++

    2015年5月17日15 21 11 VS2010 MFC编程入门之前言 http www jizhuomi com software 137 html 在大学里 有面向对象程序设计这门课程 主要介绍的是C 基础编程 那时候大家虽然都学习了
  • Freemarker中文指南

    序言 目录 一 什么是FreeMarker 二 阅读指南 三 文档约定 四 联系方式 五 关于本文档 一 什么是FreeeMarker FreeMarker是一个模板引擎 是一个基于模板生成文本的通用工具 任何文件都可以基于html自动产生
  • node调用谷歌翻译Api,实现自动国际化

    原因 项目国际化过程繁琐 每次都需要人工去google翻译 导致工作效率不高 需求 1 减少人工的重复劳动 提高工作效率 2 使用脚本调用谷歌翻译接口自动化翻译 3 free 作为程序员肯定接受不了付费服务 找方法解决限制 前期准备 1 谷
  • Java笔记16——优先级队列(堆)

    目录 概念 基于二叉树的堆 二叉堆 基于动态数组ArrayList实现的最大堆 向堆中添加元素 siftUp 在堆中取出最大值 最大堆 3 heapify 堆化 在Java中比较两个元素的大小关系 基于堆的优先级队列到底如何实现 有啥应用
  • 0x00007FFEBAD050D8 处(位于 first.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000000DD73CE

    有些时候会出现这种异常 看了网上的一些解释 说有可能是lib文件添置有问题 另一种是路径用成了 我这里给出一种新的可能 那就是图片格式转换错误 这里已经将文件定义为了灰度图像 但是后面使用cvtColor 函数时又将图片转为灰度图像 导致错
  • visio画扇形

    步骤1 首先 选择文件 选项 打开开发工具 步骤2 添加圆形 步骤3 添加两条线 形成扇形的两条边 步骤4 选中圆和线条 在开发工具菜单栏选择操作 修剪 步骤5 选中线条和右边这段弧形 依次选择开发工具 操作 连接 步骤6 拖动该扇形 填充
  • 用代码生成炫酷的词云图—《你好,李焕英》

    最近比较火的电影 你好 李焕英 莫名戳中了大家的泪点 应用评论中的一句 妈妈永远比想象中的要爱我们 虽然我没哭 但看大家都哭了 说明电影不在于多有深意 而是能引起大家共鸣的电影 才是好电影 完全瞎编的 下面我们就来看一下 你好 李焕英 在豆