在互联网的浩瀚信息海洋中 ,豆瓣作为汇聚影视、书籍等文化作品信息及用户评价的宝藏平台 ✨,其评分数据蕴含着巨大价值。通过分析这些数据,我们能洞察大众喜好趋势,挖掘小众优质作品 。今天,就让我们借助 Python 这把强大的 “数据挖掘神器” ,开启豆瓣评分的探秘之旅,通过爬虫获取数据,并利用可视化直观展现数据背后的秘密 !
我们的首要任务是获取豆瓣电影的评分数据 ,以豆瓣电影 Top250 为例 ️,这些影片涵盖不同年代、类型和风格,评分数据极具代表性。我们要提取电影名称、评分、评价人数等关键信息 。
Python 拥有众多强大的爬虫库,本次我们选用 requests
库发送 HTTP 请求获取网页内容 ,BeautifulSoup
库解析网页提取数据 ,再用 fake_useragent
库伪装请求头,避免被反爬虫机制拦截 。
首先,安装所需的库:
pip install requests beautifulsoup4 fake_useragent
接下来是核心的爬虫代码:
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
# 伪装请求头,让我们的爬虫更“隐形”
ua = UserAgent()
headers = {'User-Agent': ua.random}
def get_movie_info(url):
response = requests.get(url, headers=headers)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
movie_list = soup.find_all('div', class_='item')
movie_info_list = []
for movie in movie_list:
movie_name = movie.find('span', class_='title').text
rating = movie.find('span', class_='rating_num').text
comment_num = movie.find('span', class_='pl').text.strip('()')
movie_info = {
'movie_name': movie_name,
'rating': rating,
'comment_num': comment_num
}
movie_info_list.append(movie_info)
return movie_info_list
else:
print(f"请求失败,状态码:{response.status_code}")
return []
# 豆瓣电影Top250的URL,分多页获取
base_url = 'https://movie.douban.com/top250?start={}&filter='
all_movie_info = []
for start in range(0, 250, 25):
url = base_url.format(start)
movie_info = get_movie_info(url)
all_movie_info.extend(movie_info)
这段代码通过循环遍历不同页码的 URL ,依次获取每一页的电影信息,并整理成字典形式存储在列表中 ,完成数据初步收集 ✅。
在可视化前,我们要用 pandas
库处理和分析数据 。先安装 pandas
:
pip install pandas
然后对数据进行处理:
import pandas as pd
df = pd.DataFrame(all_movie_info)
df['rating'] = df['rating'].astype(float)
df['comment_num'] = df['comment_num'].str.replace(',', '').astype(int)
这段代码将电影信息列表转换为 pandas
的 DataFrame
格式 ,方便后续分析。同时转换评分和评论人数的数据类型 ,便于数值计算。
Python 有多种优秀的可视化库,这里我们选用 seaborn
,它基于 matplotlib
,提供更高级的接口,能创建超美观、有吸引力的统计图形 ️。安装 seaborn
:
pip install seaborn
评分分布直方图
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style('whitegrid')
plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='rating', bins=10, kde=True)
plt.title('豆瓣电影Top250评分分布')
plt.xlabel('评分')
plt.ylabel('电影数量')
plt.show()
这段代码绘制了豆瓣电影 Top250 的评分分布直方图 ,通过直方图能直观看到不同评分区间电影的数量分布情况,kde
参数显示的核密度估计曲线,更清晰展示评分的分布趋势 。
评分与评论人数关系散点图
plt.figure(figsize=(10, 6))
sns.scatterplot(data=df, x='rating', y='comment_num')
plt.title('豆瓣电影Top250评分与评论人数关系')
plt.xlabel('评分')
plt.ylabel('评论人数')
plt.show()
此散点图展示了电影评分与评论人数之间的关系 。从图中我们可以尝试分析评分较高的电影是否更受关注(评论人数更多),挖掘有趣的关联 。
通过本次 Python 爬虫与可视化实战,我们成功从豆瓣获取电影评分数据,并转化为直观的可视化图表 !这不仅让我们深入了解了豆瓣电影的评分情况,也展示了 Python 在数据收集和分析方面的强大能力 。
在未来,我们可以进一步拓展这个项目 。比如,爬取更多不同类型、地区的电影数据进行对比分析 ;结合电影的导演、演员、类型等信息,挖掘更多潜在关系 。同时,一定要遵守网站使用规则和法律法规 ,合理合法使用爬虫技术,让 Python 在数据探索道路上发挥更大价值 !
希望本文能激发你对 Python 爬虫和可视化的兴趣 ,开启属于你的数据探索之旅 !如果你在实践过程中有任何问题或心得,欢迎在评论区留言分享 !