
在豆瓣上爬取评分与评论,计算评分分布情况,并计算平均分,根据热评绘制词云,并将评分信息制作为饼图。
阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
你想使用 Python 完成一个任务,即爬取豆瓣上的评分与评论,计算评分分布情况、平均分、热评词云和评分饼图。
下面是一个基本的解决方案:
requests 和 BeautifulSoup 库爬取豆瓣页面,获取评分和评论信息。pandas 库将爬取的数据存储到 DataFrame 中。matplotlib 和 wordcloud 库绘制评分分布图和词云图。seaborn 库绘制评分饼图。以下是一个简单的示例代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import seaborn as sns
# 爬取豆瓣页面
url = "https://movie.douban.com/subject/1292052/"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# 获取评分和评论信息
ratings = []
comments = []
for comment in soup.find_all('div', class_='comment'):
rating = comment.find('span', class_='rating').text
comment_text = comment.find('span', class_='short').text
ratings.append(float(rating))
comments.append(comment_text)
# 将数据存储到 DataFrame 中
df = pd.DataFrame({'rating': ratings, 'comment': comments})
# 计算评分分布情况
rating_counts = df['rating'].value_counts()
print(rating_counts)
# 计算平均分
average_rating = df['rating'].mean()
print(average_rating)
# 绘制评分分布图
plt.hist(df['rating'], bins=5)
plt.xlabel('Rating')
plt.ylabel('Count')
plt.title('Rating Distribution')
plt.show()
# 绘制词云图
wordcloud = WordCloud().generate_from_frequencies(rating_counts)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
# 绘制评分饼图
sns.set()
plt.pie(rating_counts, labels=rating_counts.index, autopct='%1.1f%%')
plt.title('Rating Distribution')
plt.show()
请注意,这只是一个简单的示例代码,实际上你可能需要处理更多的数据和错误情况。
希望这个示例代码能够帮助你完成你的任务!