一、項目簡介
1.1 項目博客地址
https://www.cnblogs.com/venus-ping/
1.2 項目完成的功能與特色
利用爬蟲對豆瓣評分top250的電影進行爬取,獲取電影相關信息,並對獲取到的數據進行數據分析。通過數據可視化,將數據具體化更加直觀地了解電影信息。實現的模塊功能有:
① 抓取top250電影的上映時間、國家、評分、類型、評價人數、導演、參演演員信息;
② 豆瓣top250電影評價人數統計柱狀圖
③ Top250電影導演作品數top10統計柱狀圖
④ Top250電影中評論top20統計柱狀圖
⑤ Top250電影類型數量占比餅圖
⑥ Top250影片作品評分折線圖
⑦ Top250影片華語電影類型數量圓形圖
⑧ Top250影片作品上映年份統計柱狀圖
⑨ 2000年top250影片上映類型統計環形圖
⑩ Top250影片優秀演員參演統計漏斗圖
⑪ Top250影片詞雲圖
⑫ 2019年評分最高華語電影top7 3D分析圖
1.3 項目采用的技術棧
使用軟件:Visual Studio Code、JetBrains PyCharm
采用技術:pyecharts、MongoDB、python第三方庫
1.4 項目借鑒源代碼的地址
python爬蟲—豆瓣電影top250及數據可視化 https://www.jianshu.com/p/deaf10d4fd9b
1.5團隊成員任務分配表
陳佳萍
對爬取到的top250影片信息,實現top10導演作品數量、華語電影類別比重、統計2000年上映影片類型比重,並繪制環形圖、top250影片作品評分折線圖
吳琳琳
將豆瓣top250數據爬取信息並保存在Mongodb中、分析豆瓣top250電影類型數量占比、top20電影評分柱狀圖、以及上映年份統計圖
肖茹雲
豆瓣評價人數top20電影、生成華語前七星級獲分對比三維柱狀圖、生成詞雲圖
二、項目的需求分析
針對影視作品越來越多,層次不窮,通過對豆瓣top250影片爬取和分析,更加直觀選擇觀看影片。
三、項目功能架構圖、主要功能流程圖
1.1 功能架構圖
圖1 功能架構圖
1.2 主要功能流程圖
圖2 爬蟲爬取
圖3 top10導演
圖4 三維柱形圖
圖5 詞雲圖
四、系統模塊說明
1.1 系統模塊列表
圖6 項目結構圖
1.2 各模塊詳細描述(名稱,功能,運行截圖,關鍵源代碼)
1、mvtop250.py :實現對豆瓣top250的影片信息爬取
1) 構建遞歸循環,逐頁爬取
2) 建立Mongodb連接,用於數據保存
3) 抓取top250電影的上映時間、國家、評分、類型、評價人數
def get_movie_list(url,headers):
# 實例化soup對象, 便於處理
soup = requests.get(url,headers=headers) #向網站發起請求,並獲取響應對象
response = BeautifulSoup(soup.text,'lxml')#利用xml html解析器,具有容錯功能
lists = response.select('div.info')
#循環獲取信息
for list in lists:
#獲取鏈接, 也就是獲取a鏈接中href對應的值;
sing_url =list.select('a')[0].get('href')
#獲取影片名稱
name =list.select('div.hd .title')[0].text
#導演及主演
type_list = list.select('div.bd p')[0].text.strip('').split('...')[-1].replace(' ','').split('/')
#上映時間
year =type_list[0]
#國家
country = type_list[1]
#影片所屬類別
category = type_list[2]
#獲取影片評分
star = list.select('div.bd .star .rating_num')[0].text.replace(' ','')
#獲取引述
quote =list.select('div.bd .quote')[0].text
#獲取評論人數
people_num = list.select('div.bd .star span:nth-of-type(4)')[0].text.split('人')[0]
get_detail_movie(sing_url,name,year,country,category,star,quote,people_num,headers)
4) 抓取top250電影的執導導演、參演演員,並保存數據到mongodb中
我們將獲取到影片信息數據保存到數據庫中,以便后面對數據的分析,效果如下:
2、Top250影片華語電影類型數量
效果如下:
3、top10導演.py :對爬取到的信息進行分類整理,統計作品數前10的導演,以及數據可視化
1)統計所有導演數量
2)統計作品數前10導演
3)繪制柱狀圖
4)效果如下
4、2000年上映影片類型比重
1)統計和提取2000年上映影片數量類型與華語上映電影類型相同,
2)繪制環形圖
效果如下:
5、評論人數分析、以及Top250電影中評論top20統計圖
1)對爬取的影片評論人數進行分析
2)繪制柱狀圖
效果如下:
1)豆瓣top20電影評論人數
2)豆瓣top20評分情況
6、yanyuan.py:分析優秀演員參演作品數量
1)對獲取到的演員列表進行分析
2)繪制漏斗圖
效果如下:
7、作品上映年份統計以及折線圖
1)作品上映年份統計
2)作品與評分折線圖
根據爬取到的豆瓣影片信息生成的csv中讀取數據生成折線圖
8、top250影片詞雲圖以及2019年評分最高華語電影top7 3D分析圖
1)根據爬取到的豆瓣影片信息生成的csv中讀取數據生成詞雲圖
效果如下:
2)2019年評分最高華語電影top7 3D分析圖
五、項目總結
5.1 特點
利用不同的技術,實現爬取,數據保存,數據可視化。使用mongodb存放數據,利用pyecharts包實現數據可視化。使用 render() 渲染生成html文件后,創建index文件將所有渲染的html文件進行連接。
在原有的基礎上,添加top250影片中華語上映影片類型數量圓形圖、2000年上映影片類型數量環形圖、top250上映影片年份統計圖以及影片作品評分折線圖、top250中評分top20影片柱狀圖;
同時新增2019年評分最高華語電影top7 3D分析圖。
5.2 不足之處
1.爬取數據數量有限。
2.數據量大,爬取速度慢。
3.無法識別鏈接重要程度,不能判斷網頁數據的價值程度。
4.使用Mongodb作為數據存儲,而不是用MySQL
5.在設計生成年份統計圖中,x軸的年份參數出現重復值,並且圖形超出x軸;在設計折線圖中,由於數量過多,x軸數量擠在一起,影響可讀性。