豆瓣top250影片爬取信息和數據可視化


 

一、項目簡介

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 各模塊詳細描述(名稱,功能,運行截圖,關鍵源代碼)

1mvtop250.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軸數量擠在一起,影響可讀性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM