本文共 2047 字,大约阅读时间需要 6 分钟。
运行命令:
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/