赞
踩
目录
使用BeautifulSoup库,选择'lxml'作为解析器,对获取到的HTML内容进行解析。
在当今的数字化时代,网络上的信息量巨大。豆瓣电影作为中国最大的电影评论网站之一,吸引了大量的用户分享他们的观影体验。本文将介绍如何使用Python抓取豆瓣电影的评论,并通过词云分析来展示评论中的高频词汇,使用Python的词云生成库,可以将文本数据转换为词云图。这涉及到词云生成、可视化等方面的知识。通过实践,可以掌握词云生成的基本方法和技巧,并了解如何将文本数据以更加直观的方式呈现出来。
requests.get
方法发送GET请求到上面定义的URL,并传入请求头。html
变量中。soup.find_all('span', class_='short')
查找所有class为'short'的<span>
标签元素,这些元素可能包含电影的短评。这些评论存储在comments
列表中保存Excel文件:
wb.save('comment.xlsx')
将Excel文件保存为comment.xlsx
。- import requests
- from bs4 import BeautifulSoup
- from openpyxl import Workbook
- import time
- import random
-
- # 定义URL和请求头
- url = 'https://movie.douban.com/subject/3878007/comments?start=0&limit=20&sort=new_score&status=P'
- headers = {
- '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'
- }
-
- # 发送请求并获取HTML内容
- response = requests.get(url, headers=headers)
- html = response.text
-
- # 使用BeautifulSoup解析HTML
- soup = BeautifulSoup(html, 'lxml')
- comments = soup.find_all('span', class_='short')
-
- # 创建一个Excel工作簿和工作表
- wb = Workbook()
- ws = wb.active
-
- # 将评论写入Excel文件
- for comment in comments:
- ws.append([comment.text])
- time.sleep(random.random() * 3) # 等待随机时间
-
- # 保存Excel文件
- wb.save('comment.xlsx')
接下来,我们导入pandas、jieba、SnowNLP和pyecharts等库。pandas用于数据处理,jieba用于中文分词,SnowNLP用于词性标注,pyecharts用于生成词云。
-
- import pandas as pd #用于数据处理
-
- import jieba # 用于中文分词
-
- from snownlp import SnowNLP # 用于词性标
-
- import pyecharts.options as opts
-
- from pyecharts.charts import WordCloud #用于生成词云
我们使用pandas库读取一个名为"comment.xlsx"的Excel文件中的评论数据。然后,使用jieba库对评论进行中文分词,以便后续的分析。
- data = pd.read_excel(r'comment.xlsx')
- data
对'评论'这一列数据进行分词处理,使用jieba.lcut()进行分词。结果保存在新的列'分词'中。
- # 分词
- data['分词'] = data['评论'].agg(lambda x:jieba.lcut(x))
- data
对'评论'这一列数据进行词性标注,使用SnowNLP的tags属性进行标注。结果保存在新的列'词性标注'中。
- data['词性标注'] = data['评论'].agg(lambda x:list(SnowNLP(x).tags))
- data
提取出'词性标注'列中的所有标注,存入一个列表list_tags中。将list_tags转换为一个新的DataFrame,名为data_tags,包含两列,一列是词语,一列是词性。
-
- list_tags = []
- for i in data['词性标注']:
- for j in i:
- list_tags.append(j)
- list_tags
-
-
- data_tags = pd.DataFrame(list_tags,columns=['词语','词性'])
- data_tags
从结果result中提取出词语和出现次数,用于生成词云。保存在名为data_wordcloud_tags的列表中。
-
- result = data_tags[data_tags['词性']=='a'].groupby(by='词语')['词语'].count().sort_values(ascending=False)#[:20]
- result
-
-
- data_wordcloud_tags = [(i,str(j)) for i,j in zip(result.index,result.values)]
- data_wordcloud_tags
使用pyecharts的WordCloud图表类型,创建词云图。词云图的数据来自data_wordcloud_tags,词的大小范围是30到100。
设置词云图的标题为"海王的评论",字体大小为23。同时,设置提示框为显示状态。
最后,渲染并输出这个词云图
-
- c = (
- WordCloud()
- .add(series_name="",
- data_pair=data_wordcloud_tags,
- word_size_range=[30, 100]
- )
- .set_global_opts(
- title_opts=opts.TitleOpts(
- title="海王的评论", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
- ),
- tooltip_opts=opts.TooltipOpts(is_show=True),
- )
- )
- c.render_notebook()
使用 render_notebook()
方法将生成的词云图直接在 Jupyter Notebook 中展示出来。
注意:这段代码需要预先安装所有导入的库才能运行。另外,需要保证"comment.xlsx"文件存在且内容格式正确。
完整代码如图:
通过抓取豆瓣电影的评论并分析词云,我们可以了解观众对某部电影的关注点和情感倾向。这有助于我们更好地理解观众的需求和喜好,为电影制作和营销提供有价值的参考。同时,本文所介绍的方法也可以应用于其他网络平台的评论分析,为相关领域的研究提供一定的借鉴和帮助。总之,使用Python抓取豆瓣电影评论并分析词云生成词云图,不仅可以学到网络爬虫技术、数据清洗和处理、文本分析和自然语言处理、词云生成技术等基本知识和技能,还可以学习团队协作和项目管理等方面的经验。这些知识和经验对于提高个人的编程能力和综合素质都非常有帮助。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。