Python selenium爬取影评生成词云图

news2025/7/9 11:26:28

文章目录

  • 问题描述
  • 效果截图如下
  • 问题分析
  • 前期准备
  • 完整代码及解释
  • 字体素材

问题描述

通过中文分词、过滤停用词、生成词云图等步骤对评论数据进行处理和可视化。

效果截图如下

请添加图片描述
非常nice

问题分析

该程序需要使用 Selenium 库来模拟浏览器操作,因此需要下载安装 Chrome 浏览器以及对应版本的 Chromedriver。
程序中需要读取本地 stopwords.txt 文件中的停用词列表,因此需要先准备好该文件。
生成的词云图字体需要下载并放到与文件同级的目录上

前期准备

代码中用到的库和版本如下

  • Selenium (3.141.0)
  • jieba (0.42.1)
  • wordcloud (1.8.1)
  • matplotlib(3.4.2)
  • numpy (1.20.3)

运行命令
pip install selenium jieba wordcloud matplotlib numpy 进行下载

完整代码及解释

# 导入所需库
from selenium import webdriver  # 网页自动化测试工具
from selenium.webdriver.common.by import By  # 定位元素方法
import jieba  # 中文分词库
from wordcloud import WordCloud  # 词云库
import matplotlib.pyplot as plt  # 数据可视化库
import numpy as np  # 数学计算库
import os  # 操作系统接口库

# 创建浏览器对象并打开目标网页
browser = webdriver.Chrome()  # 创建 Chrome 浏览器对象
url = 'https://movie.douban.com/subject/34841067/comments?status=P'  # 目标网页的 URL
browser.get(url)  # 打开目标网页

# 定义选择器和结果列表
selector = 'span.short'  # CSS 选择器,表示评论所在的元素
results = []  # 用于存储获取到的评论

# 判断是否存在下一页按钮,不断翻页并获取评论数据
while True:
    elements = browser.find_elements(By.CSS_SELECTOR, selector)  # 使用选择器查找所有评论元素
    for element in elements:
        comment = element.text.strip()  # 获取元素的文本,去除空格和换行符
        if len(comment) > 0:  # 如果评论非空
            results.append(comment)  # 存储该评论
    # 点击下一页按钮
    try:
        next_btn = browser.find_element(By.LINK_TEXT, '后页>')  # 查找“下一页”按钮元素
        next_btn.click()  # 点击“下一页”按钮
    except:
        break  # 如果没有找到“下一页”按钮,说明已经到达最后一页,退出循环

# 关闭浏览器对象
browser.quit()  # 关闭浏览器

# 合并所有评论文本
text = '\n'.join(results)  # 将所有评论文本拼接成一个字符串,用换行符隔开

# 使用 jieba 分词库进行中文分词
words = jieba.cut(text)  # 对评论文本进行中文分词,返回一个生成器对象

# 获取停用词列表
stop_words_path = 'stopwords.txt'  # 停用词文件的路径
with open(stop_words_path, encoding='utf-8') as f:
    stop_words = f.read().splitlines()  # 读取停用词文件,将每行转换为一个元素,存储为列表

# 过滤出有效词汇
valid_words = [word for word in words if word not in stop_words]  # 过滤掉停用词,仅保留有效词汇

# 将过滤后的词汇拼接成字符串
valid_text = ' '.join(valid_words)  # 将词汇列表中的所有元素拼接成一个字符串,用空格隔开

# 创建词云对象
wc = WordCloud(
    font_path="PingFang Bold.ttf",  # 指定词云字体
    width=800,  # 词云图像宽度
    height=600,  # 词云图像高度
    background_color='white',  # 背景颜色
    max_words=200,  # 最大显示单词数
    max_font_size=80,  # 最大字号
    random_state=42  # 随机状态
)

# 生成词云图
wc.generate(valid_text)  # 生成词云图像数据

# 定义输出路径
output_dir = 'output'  # 词云图像输出路径
output_path = os.path.join(output_dir, 'wordcloud.png')  # 拼接输出文件路径

# 检查输出目录是否存在
if not os.path.exists(output_dir):  # 如果输出目录不存在
    os.makedirs(output_dir)  # 创建该目录及其所有父目录

# 输出词云图
wc.to_file(output_path)  # 将词云图像输出到指定文件

# 显示词云图
plt.imshow(wc, interpolation='bilinear')  # 将词云图像显示出来,使用双线性差值算法平滑显示
plt.axis('off')  # 不显示坐标轴
plt.show()  # 显示图像

字体素材

链接: https://pan.baidu.com/s/1-nXL9-8NRbWPd2m4AGOUNw 提取码: esf2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

@Autowired VS @Resource

一、两者的区别 首先,两者都是通过注解来实现依赖注入 。不同的话有以下几点: Autowired 是 Spring 提供的注解,所以只有 Spring 的 IoC容器 支持该注解。Resource 是 JSR-250 提供的(是 Java 的标准 ),我…

CnOpenData·A股上市公司标准数据

一、数据简介 按照《中华人民共和国标准化法》的定义,标准是指农业、工业、服务业以及社会事业等领域需要统一的技术要求。标准作为一种通用性的规范语言,在合理利用国家资源、保障产品质量、提高市场信任度、促进商品流通、维护公平竞争、保障安全等方面…

Hash算法的特点、应用和实现方法详解

什么是Hash算法?Hash算法,简称散列算法,也成哈希算法(英译),是将一个大文件映射成一个小串字符。与指纹一样,就是以较短的信息来保证文件的唯一性的标志,这种标志与文件的每一个字节…

企业数字化转型必看的6本书

导读 >> 2023年数据产业将为企业带来新的价值增量,成为企业数字化转型的重要突破口。数字化已经成为商业的一种基本常识,未来企业都将是数字化企业。然而在数字化转型话题热议的当下,真正成果显著的企业仍是少数,2023年企业…

如何阻止Windows Update更新Windows 10中的特定设备驱动程序

如果你想禁用Windows 10驱动程序的自动更新,那么方法有的是,但是如果你想禁用特定设备的驱动程序更新,该怎么办呢? 幸运的是,有一种替代方法可以禁用特定设备的驱动程序更新。你可以通过设置组策略“禁止安装与这些设备ID匹配的设备”来实现这一点。 根据微软的说法: …

在简历上写了“精通”后,我差点被面试官问到窒息....

前言 如果有真才实学,写个精通可以让面试官眼前一亮! 如果是瞎写?基本就要被狠狠地虐一把里! 最近在面试,我现在十分后悔在简历上写了“精通”二字… 先给大家看看我简历上的技能列表: 熟悉软件测试理…

阿里云服务器25565端口开通教程(ECS和轻量)

阿里云服务器25565端口怎么开通?ECS云服务器端口在安全组中开启,轻量应用服务器端口在防火墙中打开,我的世界mc服务器依赖25565端口,阿里云服务器网来详细说下云服务器ECS和轻量应用服务器开通25565端口的方法: 云服务…

学成在线项目note

目录 一、index.html 1、头部header 2、轮播图banner 3、精品推荐 4、精品推荐课程 5、footer 二、index.css 1、重要的代码 一、index.html <!-- 网站的首页, 所有网站的首页都叫index.html, 因为服务器找首页都是找index.html --> <!-- 布局: 从外到内, 从上到…

青岛科技大学|物联网工程|物联网定位技术(第三讲)|15:40

目录 物联网定位技术&#xff08;第三讲&#xff09; 1. 试简述C/A码的作用、构成 请画出C/A码生成电路简图并给予原理性的说明 2. 试简述 P码的作用、构成 请画出P码生成电路简图&#xff0c;并给予原理性的说明 3. GPS信号是如何进行伪码扩频与解扩 请画图给予说明 4…

Java的Object类和深拷贝和浅拷贝(面试题)

1.java.lang.Object类的说明 1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类&#xff0c;则默认父类为java.lang.Object类 3.Object类中的功能(属性、方法)就具通用性。 属性&#xff1a;无 方法&#xff1a;equals() / toString() / ge…

图片识别表格的方法有哪些?试试这几个好用的表格识别软件

随着数字化时代的到来&#xff0c;越来越多的公司和个人需要处理大量的表格数据。这些数据往往以图片的格式存在&#xff0c;而手动输入这些数据非常耗费时间和精力。因此&#xff0c;图片识别表格软件正在成为一个不可或缺的工具。那么&#xff0c;图片识别表格软件哪个好呢&a…

SAP从入门到放弃系列之CRP-Part1

从我学习CRP(Capacity Requirement planning)过程&#xff0c;应该能分三部分来总结。这篇就总结一下我学到的基本配置和概念。 温馨提示 &#xff1a;又臭又长的系统配置内容放在了最后的章节。本文分三个部分&#xff0c;工作中心数据和工艺路线创建&#xff0c;生产订单能力…

【Tomcat 部署及优化】

目录 一、Tomcat 安装部署1、Tomcat 介绍2、Tomcat 核心组件1、Tomcat 功能组件结构&#xff1a;2、Container 结构分析&#xff1a; 3、Tomcat 请求过程&#xff1a; 二、Tomcat 服务部署1.关闭防火墙&#xff0c;将安装 Tomcat 所需软件包传到/opt目录下2.安装JDK3.设置JDK环…

六、docker安装ngxin部署若依前端

1.第一次安装&#xff0c;不进行挂载数据卷&#xff0c; docker run \ -p 8060:80 \ --name nginx \ --privilegedtrue \ --restartalways \ -d nginx:1.17.82. 将配置信息复制到宿主机本地 # 将容器nginx.conf文件复制到宿主机 docker cp nginx:/etc/nginx/nginx.conf /data…

代码随想录算法训练营第五十天|123.买卖股票的最佳时机III|188.买卖股票的最佳时机IV

LeetCode123.买卖股票的最佳时机III 动态规划五部曲&#xff1a; 1&#xff0c;确定dp数组以及下标的含义&#xff1a; 一天一共就有五个状态&#xff0c; 没有操作 &#xff08;其实我们也可以不设置这个状态&#xff09;第一次持有股票第一次不持有股票第二次持有股票第二…

为什么代码签名需要添加时间戳?

如果您是软件发行商或开发人员&#xff0c;那么您就会知道软件的成功通常取决于下载次数&#xff0c;这部分取决于用户对它的信任程度。因此&#xff0c;为了向用户保证并避免在下载或安装时出现不必要的警告消息&#xff0c;您采取了主动步骤&#xff0c;例如使用受信任的代码…

uniapp和springboot微信小程序开发实战:开发环境准备以及技术选型

文章目录 开发工具STSHBuilder X其他工具技术选型前端开发vueelementUI后端springbootmybatisplusJWT和shiro开发工具 STS STS是开发springboot项目的利器,是Eclipse的一个版本,全称是SpringToolSuite STS下载地址 HBuilder X 下载地址

WWDC2023|苹果iOS 17系统更新:可共享AirTag

苹果正在召开的 WWDC 2023 开发者大会上&#xff0c;宣布推出了 iOS 17 系统。包含一些功能上的更新。 共享 AirTag iOS 17 引入了一项备受期待的 AirTag 功能&#xff0c;即与他人共享 AirTag。自推出以来&#xff0c;AirTag 只能由一个人拥有和使用&#xff0c;但在 iOS 17…

如何做架构设计? | 京东云技术团队

也许您对软件设计存在一些疑惑&#xff0c;或者缺乏明确思路&#xff0c;那么本文将非常适合您。 1、设计很重要 我们可以看一下周边的事物&#xff0c;那些好的东西&#xff0c;他们并不会天然存在&#xff0c;都是被设计出来的&#xff0c;因此设计就是创造和改善事物的重要…

基于BP神经网络对MNIST数据集检测识别

基于BP神经网络对MNIST数据集检测识别 1&#xff0e;作者介绍2&#xff0e;基于BP神经网络对MNIST数据集检测识别2.1 BP神经网络介绍2.2 神经元模型2.3 激活函数2.4 BP神经网络基础架构2.5 BP神经网络正向传播反向传播 3&#xff0e;基于BP神经网络对MNIST数据集检测识别实验3.…