Python爬取豆瓣电影数据与可视化分析实战

发布时间:2026/8/2 4:41:39
Python爬取豆瓣电影数据与可视化分析实战 1. 项目概述最近在做一个挺有意思的小项目——用Python爬取豆瓣电影数据并进行可视化分析。这个项目特别适合想学习Python数据分析的新手也适合需要快速构建数据看板的职场人士。整个过程涉及数据采集、清洗、分析和可视化四个核心环节完整走下来能掌握一套实用的数据分析工作流。我选择豆瓣电影作为数据源主要是因为它结构清晰、数据质量高而且不需要复杂的反爬策略就能获取到丰富的电影信息。通过这个项目我们不仅能分析电影评分分布、类型占比等基础数据还能挖掘导演作品评分趋势、演员票房号召力等深层信息。2. 技术选型与准备2.1 开发环境配置我推荐使用Anaconda来管理Python环境它自带了数据分析常用的库省去了很多安装麻烦。具体版本选择Python 3.8这个版本对各类库的兼容性最好。核心需要安装的库有requests用于网页请求BeautifulSoup网页解析pandas数据处理matplotlib/seaborn基础可视化pyecharts交互式可视化注意安装pyecharts时建议指定版本最新版可能存在兼容性问题。可以用pip install pyecharts1.9.12.2 数据采集方案设计豆瓣电影的数据获取有两种方式直接爬取网页适合小规模数据采集使用官方API需要申请API key但更稳定考虑到项目规模我选择了网页爬取方案。主要采集以下字段电影名称评分评价人数导演主演类型上映时间片长3. 核心实现过程3.1 数据爬取实现爬虫部分的核心代码如下import requests from bs4 import BeautifulSoup import pandas as pd import time def get_movie_data(start0): headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit... } url fhttps://movie.douban.com/top250?start{start} response requests.get(url, headersheaders) soup BeautifulSoup(response.text, html.parser) movies [] for item in soup.find_all(div, class_item): title item.find(span, class_title).text rating float(item.find(span, class_rating_num).text) # 其他字段解析... movies.append([title, rating]) time.sleep(2) # 礼貌爬取 return movies重要提示务必设置合理的爬取间隔(建议2-3秒)避免给豆瓣服务器造成压力3.2 数据清洗与处理原始数据需要经过以下处理步骤缺失值处理用中位数填充缺失的评分异常值处理剔除评分人数少于100的电影数据转换将上映时间转换为datetime格式特征工程从类型字段中提取主类型# 示例处理评分异常值 df df[df[rating_count] 100] df[rating] df[rating].fillna(df[rating].median())3.3 可视化分析实现3.3.1 基础分布分析使用seaborn绘制评分分布直方图import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize(10,6)) sns.histplot(datadf, xrating, bins20, kdeTrue) plt.title(豆瓣电影评分分布) plt.show()3.3.2 高级可视化使用pyecharts制作交互式图表from pyecharts.charts import Bar from pyecharts import options as opts # 按年份统计电影数量 year_count df.groupby(year).size() bar ( Bar() .add_xaxis(list(year_count.index)) .add_yaxis(电影数量, list(year_count.values)) .set_global_opts(title_optsopts.TitleOpts(title各年份电影数量)) ) bar.render(year_count.html)4. 分析案例与洞见4.1 电影类型分析通过分析发现剧情片占比最高(约35%)喜剧和动作片次之纪录片平均评分最高(8.2分)4.2 导演作品分析对导演作品进行聚合分析可以发现某些导演的作品评分标准差很小风格稳定部分导演早期作品评分高于近期作品少数导演所有作品评分都在8分以上5. 常见问题与优化5.1 爬虫被封怎么办解决方案使用代理IP轮换降低请求频率模拟浏览器行为(添加更多headers)5.2 可视化图表不清晰优化建议调整图表尺寸(figsize参数)简化数据(减少显示的数据点)选择合适的图表类型(避免过度复杂的可视化)5.3 数据分析效率低性能优化技巧使用pandas的向量化操作替代循环对大数据集使用dask替代pandas将中间结果缓存到本地6. 项目扩展方向这个基础项目可以进一步扩展加入情感分析分析影评情感倾向构建推荐系统基于用户评分历史推荐电影时间序列分析预测电影评分变化趋势社交网络分析分析导演-演员合作网络我在实际项目中最大的体会是数据质量比算法复杂度更重要。花时间做好数据清洗和特征工程往往比直接上复杂模型效果更好。另外可视化不仅是展示结果的手段更是发现数据问题的重要工具 - 很多数据异常都是在画图时才发现的。