写一个分析豆瓣电影评论的代码
时间: 2023-08-12 11:08:01 浏览: 122
好的,以下是一个简单的程序示例,使用 Python 的 requests 库和 BeautifulSoup 库进行网页爬取和数据处理,使用 TextBlob 库进行情感分析,使用 matplotlib 库进行数据可视化展示:
```python
import requests
from bs4 import BeautifulSoup
from textblob import TextBlob
import matplotlib.pyplot as plt
# 豆瓣电影评论页面的 URL 地址
url = 'https://movie.douban.com/subject/26752088/comments?start={}&limit=20&sort=new_score&status=P'
# 存储情感分析结果的字典
sentiment_dict = {'positive': 0, 'neutral': 0, 'negative': 0}
# 爬取前 100 条评论数据进行分析
for i in range(0, 100, 20):
# 构造评论页面的 URL 地址
page_url = url.format(i)
# 发送 GET 请求,获取评论页面的 HTML 代码
response = requests.get(page_url)
# 使用 BeautifulSoup 解析 HTML 代码,获取评论内容
soup = BeautifulSoup(response.text, 'html.parser')
comment_list = soup.find_all('span', class_='short')
# 对每条评论进行情感分析,并统计结果
for comment in comment_list:
blob = TextBlob(comment.text)
sentiment = blob.sentiment.polarity
if sentiment > 0:
sentiment_dict['positive'] += 1
elif sentiment == 0:
sentiment_dict['neutral'] += 1
else:
sentiment_dict['negative'] += 1
# 计算每个情感类别的评论数和比例
total_comments = sum(sentiment_dict.values())
positive_comments = sentiment_dict['positive']
neutral_comments = sentiment_dict['neutral']
negative_comments = sentiment_dict['negative']
positive_ratio = positive_comments / total_comments
neutral_ratio = neutral_comments / total_comments
negative_ratio = negative_comments / total_comments
# 将结果进行可视化展示
labels = ['Positive', 'Neutral', 'Negative']
sizes = [positive_ratio, neutral_ratio, negative_ratio]
colors = ['yellowgreen', 'gold', 'lightcoral']
explode = (0.1, 0, 0)
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
autopct='%1.1f%%', shadow=True, startangle=140)
plt.axis('equal')
plt.show()
```
需要注意的是,以上代码仅作为示例,实际使用中需要进行完整的错误处理和异常处理,以及符合法律法规和豆瓣网站的相关规定。
阅读全文