基于python爬取豆瓣电影信息可视化代码
时间: 2023-09-13 08:05:24 浏览: 114
课设新项目基于flask框架+python实现豆瓣电源top250爬取及数据可视化源码.zip
以下是基于 Python 爬取豆瓣电影信息并进行可视化的代码示例:
```python
# 导入需要的库
import requests
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# 设置请求头
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'}
# 定义爬取电影信息的函数
def get_movie_info(tag, page_start, page_limit):
# 构造请求url
url = 'https://api.douban.com/v2/movie/search?tag={}&start={}&count={}'.format(tag, page_start, page_limit)
# 发送请求
response = requests.get(url, headers=headers)
# 获取响应json数据
movie_json = response.json()
# 获取电影列表
movie_list = movie_json.get('subjects')
# 定义一个空列表存储电影信息
movie_info_list = []
# 遍历电影列表,提取需要的信息
for movie in movie_list:
# 电影名称
title = movie.get('title')
# 电影评分
rate = movie.get('rating').get('average')
# 电影类型
genres = movie.get('genres')
# 导演
directors = movie.get('directors')[0].get('name')
# 演员
casts = ','.join([i.get('name') for i in movie.get('casts')])
# 上映年份
year = movie.get('year')
# 电影介绍
summary = movie.get('summary')
# 构造电影信息字典
movie_info = {'title': title, 'rate': rate, 'genres': genres, 'directors': directors, 'casts': casts, 'year': year, 'summary': summary}
# 将电影信息字典添加到列表中
movie_info_list.append(movie_info)
# 返回电影信息列表
return movie_info_list
# 获取所有电影信息
movie_info_list = []
for i in range(0, 100, 20):
movie_info_list += get_movie_info('热门', i, 20)
# 将电影信息转换成DataFrame格式
df_movie = pd.DataFrame(movie_info_list)
# 绘制电影类型分布图
genre_count = df_movie['genres'].str.split(',', expand=True).stack().value_counts()
genre_count.plot(kind='bar', title='电影类型分布图', figsize=(8, 6))
plt.xticks(rotation=45)
plt.show()
# 绘制电影评分排行榜
df_movie.sort_values(by='rate', ascending=False, inplace=True)
df_movie['rate'].plot(kind='bar', title='电影评分排行榜', figsize=(8, 6))
plt.xticks(rotation=45)
plt.show()
# 绘制电影词云图
text = ' '.join(df_movie['summary'].tolist())
wordcloud = WordCloud(width=800, height=600, background_color='white').generate(text)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
```
这段代码实现了基于 Python 爬取豆瓣电影信息并进行可视化的功能,其中包括爬取电影信息、清洗数据、绘制电影类型分布图、电影评分排行榜和电影词云图等。您可以根据自己的需求进行修改和扩展。
阅读全文