博客
关于我
Python selenium爬取影评生成词云图
阅读量:800 次
发布时间:2023-03-06

本文共 2047 字,大约阅读时间需要 6 分钟。

问题描述

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

问题分析

需要使用 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()  url = 'https://movie.douban.com/subject/34841067/comments?status=P'  browser.get(url)  # 定义选择器和结果列表  selector = 'span.short'  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()

字体素材

字体素材已移至百度网盘,具体链接已去除。

转载地址:http://uhafk.baihongyu.com/

你可能感兴趣的文章
python | Python中的内存池与缓存机制
查看>>
python | Python中的弱引用与内存管理
查看>>
python | Python中的类多态:方法重写和动态绑定
查看>>
python | Python作用域链查找机制
查看>>
python | Python俄罗斯方块游戏详解
查看>>
python | Python动态代码执行:exec和compile函数
查看>>
Python读取文件数据进行数据图形化展示
查看>>
python | Python反向迭代:reversed实现机制
查看>>
python | Python开发必知的数据容器用法(建议收藏!)
查看>>
python读取文件夹下文件名称_如何在Python目录中获取文件名列表
查看>>
python | Python文本处理中的相似性识别应用
查看>>
python | Python模块缓存:sys.modules机制
查看>>
python | Python集成学习和随机森林算法
查看>>
python | Python高阶函数与函数式编程
查看>>
python | pytime,一个实用的 时间和日期处理 Python 库!
查看>>
python | pyupgrade,一个有趣的 Python 库!
查看>>
python | pyvips,一个神奇的 图像处理 Python 库
查看>>
Python | qutip,一个高级的 Python 库!
查看>>
python | rapidjson,一个实用的 提高JSON处理效率 Python 库!
查看>>
python | reflex,一个无敌的 Python 库!
查看>>