I. プロジェクト
1.1 プロジェクトのブログのアドレス
https://www.cnblogs.com/venus-ping/
1.2 機能と完成したプロジェクトの特性
爬虫類のクレソンのスコアの使用 top250映画クロール、映画関連の情報を取得し、取得したデータは、データの視覚化です。取得したデータは次の通りされています。グラブ top250映画の上映時間、国、スコア、タイプ、評価者の数、ディレクター、俳優が主演;、フィルムタイプの割合をリリース国を実装し、上位10作品の監督と主演良い俳優の数を作業データの可視化の数。
1.3 プロジェクトで採択された技術スタック
使用ソフトウェア: Visual Studioのコード、JetBrainsのPyCharm
技術の使用: pyecharts、MongoDBの、Pythonのサードパーティライブラリ
1.4 Address項目参照ソースコード
Pythonの爬虫類- IMDBのtop250とデータの可視化 https://www.jianshu.com/p/deaf10d4fd9b
1.5 チームメンバーのタスク割り当てテーブル
ChenjiaのPing にクロールの TOP10の数を達成するためにtop250ビデオ情報はディレクター、映画カテゴリとデータの可視化の割合を働きます
呉琳琳 設計と実装データの可視化の国を解放top250映画情報クロール、
シャオRuyun にクロールのコメントの数を達成するためにビデオ情報top250参加作品の数、優れた俳優データの可視化
第二に、プロジェクトのニーズ分析
より多くの映画やテレビの仕事のために、レベルが悪いではない、クレソンを通じて top250のクロールや分析、映画、より直感的な映画を鑑賞することを選択しました。
第三に、プロジェクトの機能アーキテクチャ図、主に機能フローチャート
1.1 ファンクション・チャート
図1・ファンクション・チャート
1.2 主な機能フロー図
図2クローラークロール
図3国情報分析
図4 mvtop250映画情報
図5 TOP10ディレクター
图6 yanyuan
図7カテゴリ
第四に、記載されているシステムモジュール
。1つの0.1 モジュール一覧システム
図8プログラム構造。
1つの.2 詳細に説明したモジュール(名前、機能、操作テーマ、キーソースコード)
1 、mvtop250.py:クレソンの実現top250 映画情報のクロール
再帰ループの1)建設、ページのクロールによってページ
2) を確立データ記憶のためのMongoDB接続
3) グラブ top250映画の上映時間、国、スコア、タイプ、評価の数
デフget_movie_list(URL、ヘッダ):
#インスタンス化のスープオブジェクト、取り扱いの容易さ
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、country.py :构建top250电影中出自国家最多的20个国家的列表
1)构建top250电影中出自国家最多的20个国家的列表
#建立国家列表
country_list =[]
#循环查找国家名
for i in item_info.find():
if '导' not in i['country']:
for j in i['country']:
if j !='':
#插入获得信息,放入列表
country_list.append(str(j).strip('\xa0'))
country_list1 = list(set(country_list))
append_list=[]
for i in country_list1:
list11 =[]
list11.append(str(i))
list11.append(country_list.count(i))
append_list.append(list11)
#排序
list22 = sorted(append_list,key =lambda d:d[1],reverse=True)[:10]
2) 绘制饼状图
c = (Pie().add("",
[list(z) for z in zip(list(a[0] for a in list22),list(a[1] for a in list22) )],
center=["35%", "50%"])
.set_global_opts(
title_opts=opts.TitleOpts(title="豆瓣top250电影产源国家数量占比"),
legend_opts=opts.LegendOpts(pos_bottom='0'))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")))
c.render('country.html')# 使用 render() 渲染生成 .html 文件
效果如下:
3、top10导演.py :对爬取到的信息进行分类整理,统计作品数前10的导演,以及数据可视化
1)统计所有导演数量
2)统计作品数前10导演
3)绘制柱状图
4)效果如下
4、category.py:影片类型比重
1)对爬取到影片进行分类整理,放入list列表中
2)针对分类列表进行递归循环,相同类型的影片数量count+1
3) 绘制饼状图
效果如下:
由饼状图可知,爱情类的影片更受观众喜欢。
5、people.py:评论人数分析
1)对爬取的影片评论人数进行分析
2)绘制柱状图
效果如下:
6、yanyuan.py:分析优秀演员参演作品数量
1)对获取到的演员列表进行分析
2)绘制漏斗图
效果如下:
五、项目总结
5.1 特点
利用不同的技术,实现爬取,数据保存,数据可视化。使用mongodb存放数据,利用pyecharts包实现数据可视化。使用 render() 渲染生成html文件后,创建index文件将所有渲染的html文件进行连接。
5.2 不足之处
1.爬取数据数量有限。
2.数据量大,爬取速度慢。
3.无法识别链接重要程度,不能判断网页数据的价值程度。
4.使用Mongodb作为数据存储,而不是用MySQL