基于 Python 的豆瓣电影数据爬取与可视化分析毕业设计实战

在互联网的浩瀚信息海洋中 ,豆瓣作为汇聚影视、书籍等文化作品信息及用户评价的宝藏平台 ✨,其评分数据蕴含着巨大价值。通过分析这些数据,我们能洞察大众喜好趋势,挖掘小众优质作品 。今天,就让我们借助 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)  

这段代码将电影信息列表转换为 pandasDataFrame 格式 ,方便后续分析。同时转换评分和评论人数的数据类型 ,便于数值计算。

可视化工具选择

Python 有多种优秀的可视化库,这里我们选用 seaborn ,它基于 matplotlib,提供更高级的接口,能创建超美观、有吸引力的统计图形 ️。安装 seaborn

pip install seaborn  

绘制可视化图表

  1. 评分分布直方图

    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 参数显示的核密度估计曲线,更清晰展示评分的分布趋势 。

  2. 评分与评论人数关系散点图

    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 爬虫和可视化的兴趣 ,开启属于你的数据探索之旅 !如果你在实践过程中有任何问题或心得,欢迎在评论区留言分享 !

你可能感兴趣的:(python,课程设计,开发语言,毕业设计,计算机学生,云计算)