当前位置:   article > 正文

使用Python抓取豆瓣电影评论并分析词云生成词云图

使用Python抓取豆瓣电影评论并分析词云生成词云图

目录

一、引言

二、抓取海王豆瓣电影评论

导入所需库

发送GET请求并获取HTML内容

使用BeautifulSoup解析HTML

使用BeautifulSoup库,选择'lxml'作为解析器,对获取到的HTML内容进行解析。

写入评论到Excel文件

三、分析词云

1.导入所需库

 2.读取Excel文件并分词

   词性标注 

  统计词频并生成词云        

  可视化结果展示

四、结论


    

一、引言

在当今的数字化时代,网络上的信息量巨大。豆瓣电影作为中国最大的电影评论网站之一,吸引了大量的用户分享他们的观影体验。本文将介绍如何使用Python抓取豆瓣电影的评论,并通过词云分析来展示评论中的高频词汇,使用Python的词云生成库,可以将文本数据转换为词云图。这涉及到词云生成、可视化等方面的知识。通过实践,可以掌握词云生成的基本方法和技巧,并了解如何将文本数据以更加直观的方式呈现出来。

二、抓取海王豆瓣电影评论

  1. 导入所需库
  2. 发送GET请求并获取HTML内容
    1. 使用requests.get方法发送GET请求到上面定义的URL,并传入请求头。
    2. 获取到的HTML内容存储在html变量中。
  3. 使用BeautifulSoup解析HTML
    1. 使用BeautifulSoup库,选择'lxml'作为解析器,对获取到的HTML内容进行解析。
    2. 使用soup.find_all('span', class_='short')查找所有class为'short'的<span>标签元素,这些元素可能包含电影的短评。这些评论存储在comments列表中
  4. 写入评论到Excel文件
    1. 遍历所有抓取到的评论。
    2. 对于每个评论,将其文本内容添加到Excel工作表的当前行中。
    3. 在每次添加评论后,代码会等待一个随机时间(0到3秒之间),这是为了避免过于频繁地抓取数据,防止被豆瓣服务器屏蔽
  5. 保存Excel文件:

    • 最后,使用wb.save('comment.xlsx')将Excel文件保存为comment.xlsx
  1. import requests
  2. from bs4 import BeautifulSoup
  3. from openpyxl import Workbook
  4. import time
  5. import random
  6. # 定义URL和请求头
  7. url = 'https://movie.douban.com/subject/3878007/comments?start=0&limit=20&sort=new_score&status=P'
  8. headers = {
  9. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
  10. }
  11. # 发送请求并获取HTML内容
  12. response = requests.get(url, headers=headers)
  13. html = response.text
  14. # 使用BeautifulSoup解析HTML
  15. soup = BeautifulSoup(html, 'lxml')
  16. comments = soup.find_all('span', class_='short')
  17. # 创建一个Excel工作簿和工作表
  18. wb = Workbook()
  19. ws = wb.active
  20. # 将评论写入Excel文件
  21. for comment in comments:
  22. ws.append([comment.text])
  23. time.sleep(random.random() * 3) # 等待随机时间
  24. # 保存Excel文件
  25. wb.save('comment.xlsx')

三、分析词云

1.导入所需库

接下来,我们导入pandas、jieba、SnowNLP和pyecharts等库。pandas用于数据处理,jieba用于中文分词,SnowNLP用于词性标注,pyecharts用于生成词云。

  1. import pandas as pd #用于数据处理
  2. import jieba # 用于中文分词
  3. from snownlp import SnowNLP # 用于词性标
  4. import pyecharts.options as opts
  5. from pyecharts.charts import WordCloud #用于生成词云
 2.读取Excel文件并分词

我们使用pandas库读取一个名为"comment.xlsx"的Excel文件中的评论数据。然后,使用jieba库对评论进行中文分词,以便后续的分析。

  1. data = pd.read_excel(r'comment.xlsx')
  2. data

 对'评论'这一列数据进行分词处理,使用jieba.lcut()进行分词。结果保存在新的列'分词'中。

  1. # 分词
  2. data['分词'] = data['评论'].agg(lambda x:jieba.lcut(x))
  3. data
   词性标注 

对'评论'这一列数据进行词性标注,使用SnowNLP的tags属性进行标注。结果保存在新的列'词性标注'中。

  1. data['词性标注'] = data['评论'].agg(lambda x:list(SnowNLP(x).tags))
  2. data

         

提取出'词性标注'列中的所有标注,存入一个列表list_tags中。将list_tags转换为一个新的DataFrame,名为data_tags,包含两列,一列是词语,一列是词性。

  1. list_tags = []
  2. for i in data['词性标注']:
  3. for j in i:
  4. list_tags.append(j)
  5. list_tags
  6. data_tags = pd.DataFrame(list_tags,columns=['词语','词性'])
  7. data_tags

  统计词频并生成词云        

从结果result中提取出词语和出现次数,用于生成词云。保存在名为data_wordcloud_tags的列表中。

  1. result = data_tags[data_tags['词性']=='a'].groupby(by='词语')['词语'].count().sort_values(ascending=False)#[:20]
  2. result
  3. data_wordcloud_tags = [(i,str(j)) for i,j in zip(result.index,result.values)]
  4. data_wordcloud_tags

使用pyecharts的WordCloud图表类型,创建词云图。词云图的数据来自data_wordcloud_tags,词的大小范围是30到100。
设置词云图的标题为"海王的评论",字体大小为23。同时,设置提示框为显示状态。
最后,渲染并输出这个词云图

  1. c = (
  2. WordCloud()
  3. .add(series_name="",
  4. data_pair=data_wordcloud_tags,
  5. word_size_range=[30, 100]
  6. )
  7. .set_global_opts(
  8. title_opts=opts.TitleOpts(
  9. title="海王的评论", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
  10. ),
  11. tooltip_opts=opts.TooltipOpts(is_show=True),
  12. )
  13. )
  14. c.render_notebook()
  可视化结果展示

使用 render_notebook() 方法将生成的词云图直接在 Jupyter Notebook 中展示出来。

 注意:这段代码需要预先安装所有导入的库才能运行。另外,需要保证"comment.xlsx"文件存在且内容格式正确

完整代码如图:

 

四、结论

通过抓取豆瓣电影的评论并分析词云,我们可以了解观众对某部电影的关注点和情感倾向。这有助于我们更好地理解观众的需求和喜好,为电影制作和营销提供有价值的参考。同时,本文所介绍的方法也可以应用于其他网络平台的评论分析,为相关领域的研究提供一定的借鉴和帮助。总之,使用Python抓取豆瓣电影评论并分析词云生成词云图,不仅可以学到网络爬虫技术、数据清洗和处理、文本分析和自然语言处理、词云生成技术等基本知识和技能,还可以学习团队协作和项目管理等方面的经验。这些知识和经验对于提高个人的编程能力和综合素质都非常有帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/301588?site
推荐阅读
相关标签
  

闽ICP备14008679号