首页 > Python资料 博客日记
大数据毕业设计:Python豆瓣电影数据爬取+清洗+可视化分析系统 ✅
2024-06-20 22:00:06Python资料围观193次
毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)
毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总
🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅
1、项目介绍
技术栈:
Python语言、Flask框架、MySQL数据库、requests爬虫技术、Echarts可视化、爬虫+清洗+可视化、豆瓣电影数据
2、项目界面
(1)电影制片地区饼图分析
(2)电影数据信息
(3)首页
(4)电影数据漏斗图分析
(5)饼图分析
(6)电影类型数据柱状图
(7)导演作品柱状图分析
(8)评分与评论人数散点图
(9)每年电影数量折线图
(10)数据采集页面
3、项目说明
豆瓣电影数据采集分析可视化系统是基于Python语言和Flask框架开发的一款应用程序。它主要通过使用requests爬虫技术,从豆瓣电影网站上采集电影相关数据,并将其存储在MySQL数据库中。
该系统的主要功能包括数据采集、数据清洗以及可视化分析。首先,通过编写爬虫程序,系统可以自动从豆瓣电影网站上抓取电影的各种信息,如电影名称、评分、导演、演员等。获取到的原始数据会经过清洗处理,去除重复的数据、空值以及不符合要求的数据,以确保数据的准确性和完整性。
接下来,系统会利用Echarts可视化库,将清洗后的数据进行可视化分析。通过生成各种图表和图形,如柱状图、折线图、饼图等,系统可以直观地展示电影数据的统计结果和趋势变化。用户可以通过交互式界面,自定义查询条件和筛选参数,从而获取到特定范围内的电影数据,并进行更深入的分析和比较。
豆瓣电影数据采集分析可视化系统的应用场景广泛。它可以帮助电影从业人员了解当前热门电影及其评分情况,以便做出更好的决策。同时,它也可以作为电影爱好者的工具,用于查找感兴趣的电影、了解电影的评价和口碑等信息。
总之,豆瓣电影数据采集分析可视化系统结合了爬虫技术、数据清洗和可视化分析,为用户提供了一个方便、直观的电影数据查询和分析工具。通过对豆瓣电影数据的采集、清洗和可视化,用户可以更好地理解电影市场的动态,并做出更明智的决策。
4、核心代码
from bs4 import BeautifulSoup
import re
import urllib.request,urllib.error
import xlwt
import time
import random
import sqlite3
def main():
baseurl = "https://movie.douban.com/top250?start="
#1.爬取网页
datalist = getData(baseurl)
savepath='豆瓣Top250.xls'
saveData(datalist,savepath)
# askURL(baseurl)
#爬取网页
def getData(baseurl):
#存储详情页链接
href_list =[]
#存储所有电影的信息
datalist = []
'''
0*25=0
1*25=25
...
'''
#调用获取页面信息的函数 10次
for i in range(0,10):
time.sleep(random.random() * 5)
url = baseurl + str(i*25)
#保存网页源码
html = askURL(url)
#2.逐一解析数据
bs = BeautifulSoup(html,'html.parser')
#找到所有的class=item的div,并保存到列表中
item_list = bs.find_all('div',class_='item') #查找符合要求的字符串
for item in item_list:
#正则表达式是字符串匹配,需要把item转化为字符串
item = str(item)
#提取详情页链接
detail_href = re.findall(r'<a href="(.*?)">',item)[0]
# print(detail_href)
href_list.append(detail_href)
# print(href_list)
# print(item)
for href in href_list:
time.sleep(random.random() * 5)
#获取详情页源码
detail_html = askURL(href)
# print(detail_html)
#保存一部电影的所有信息
data = []
# 获取片名
title = ''
try:
title = re.findall(r'"v:itemreviewed">(.*?)</span>', detail_html)[0]
except:
print("获取片名失败")
data.append(title)
# 获取导演名
director = ''
try:
director = re.findall(r'"v:directedBy">(.*?)</a>', detail_html)[0]
except:
print("获取导演信息失败")
data.append(director)
# print(director)
# 获取第一编剧
scriptwriter = ''
try:
scriptwriter = re.findall(r"编剧.*?: <span class='attrs'><a href=.*?>(.*?)</a>", detail_html)[0]
except:
print("获取编剧信息失败")
data.append(scriptwriter)
# 获取第一主演
star = ''
try:
star = re.findall(r'rel="v:starring">(.*?)</a>', detail_html)[0]
except:
print("获取演员信息失败")
data.append(star)
# print(star)
# 获取类型
filmtype = ''
try:
filmtype = re.findall(r'"v:genre">(.*?)</span>', detail_html)[0]
except:
print("获取电影类型信息失败")
data.append(filmtype)
# print(filmtype)
# 获得制片国家
country = ''
try:
country = re.findall(r'<span class="pl">制片国家/地区:</span> (.*?)<br/>', detail_html)[0]
except:
print("获取制片国家失败")
data.append(country)
# print(country)
# 获得语言
lag = ''
try:
lag = re.findall(r'<span class="pl">语言:</span> (.*?)<br/>', detail_html)[0]
except:
print("获取语言失败")
data.append(lag)
# print(lag)
# 获得片长
runtime = ''
try:
runtime = re.findall(r'<span property="v:runtime" content="(.*?)">', detail_html)[0]
except:
print("获取片长失败")
data.append(runtime)
# print(runtime)
# 获得评分 ----------------
score = ''
try:
score = re.findall(r'property="v:average">(.*?)</strong>', detail_html)[0]
except:
print("获取评分失败")
data.append(score)
# print(score)
# 获得评价人数
num = ''
try:
num = re.findall(r'<span property="v:votes">(.*?)</span>人评价', detail_html)[0]
except:
print("获取评价人数失败")
data.append(num)
# print(num)
year = ''
try:
year = re.findall(r'<span class="year">(.*?)</span>', detail_html)[0]
except:
print("获取上映日期失败")
data.append(year)
# print(year)
description = ''
try:
description = re.findall(r'<meta property="og:description" content="(.*?)" />', detail_html)[0]
except:
print("获取简介失败")
data.append(description)
# print(description)
image = ''
try:
image = re.findall(r'<meta property="og:image" content="(.*?)" />', detail_html)[0]
except:
print("获取图片失败")
data.append(image)
# print(image)
print(data)
datalist.append(data)
# print(datalist)
return datalist
#得到指定一个URL的网页内容
def askURL(url):
#模拟浏览器头部信息,向豆瓣服务器发送消息
# headers = {
# 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
# }
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44'
}
content = ''
#请求对象
req = urllib.request.Request(url,headers = headers)
try:
#得到响应信息
response = urllib.request.urlopen(req)
#读取响应信息
content = response.read().decode('utf-8')
# print(content)
except urllib.error.URLError as e:
#hasattr 检查指定属性是否存在
if hasattr(e,'code'):
print(e.code)
if hasattr(e,'reason'):
print(e.reason)
return content
def saveData(datalist,savepath):
# 创建workbook对象
workbook = xlwt.Workbook(encoding='utf-8',style_compression=0)
# 创建工作表
worksheet = workbook.add_sheet('豆瓣电影Top250',cell_overwrite_ok=True)
col = ('电影名','导演','编剧','主演','类型','制片国家','语言','片长','评分','评价人数','上映日期','简介','图片')
for i in range(0,13):
# 写入表头
worksheet.write(0,i,col[i])
for i in range(0,250):
print('第%d条'%(i+1))
data = datalist[i]
for j in range(0,13):
worksheet.write(i+1, j, data[j])
workbook.save(savepath) #保存
if __name__ == '__main__':
main()
源码获取:
🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦🍅
感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程