基于python的影评数据分析_[Python] 通过采集两万条数据,对《无名之辈》影评分析...

一、说明

本文主要讲述采集猫眼电影用户评论进行分析,相关爬虫采集程序可以爬取多个电影评论。

运行环境:Win10/Python3.5。

分析工具:jieba、wordcloud、pyecharts、matplotlib。

基本流程:下载内容 ---> 分析获取关键数据 ---> 保存本地文件 ---> 分析本地文件制作图表

注意:本文所有图文和源码仅供学习,请勿他用,转发请注明出处!

本文主要参考:https://mp.weixin.qq.com/s/mTxxkwRZPgBiKC3Sv-jo3g

二、开始采集

2.1、分析数据接口:

为了健全数据样本,数据直接从移动端接口进行采集,连接如下,其中橙色部分为猫眼电影ID,修改即可爬取其他电影。

链接地址:http://m.maoyan.com/mmdb/comments/movie/1208282.json?v=yes&offset=15&startTime=

接口返回的数据如下,主要采集(昵称、城市、评论、评分和时间),用户评论在json['cmts'] 中:

2.2、爬虫程序核心内容(详细可以看后面源代码):

>启动脚本需要的参数如下(脚本名+猫眼电影ID+上映日期+数据保存的文件名):.\myMovieComment.py 1208282 2016-11-16 myCmts2.txt

>下载html内容:download(self, url),通过python的requests模块进行下载,将下载的数据转成json格式

1 defdownload(self, url):2 """下载html内容"""

3

4 print("正在下载URL:"+url)5 #下载html内容

6 response = requests.get(url, headers=self.headers)7

8 #转成json格式数据

9 if response.status_code == 200:10 returnresponse.json()11 else:12 #print(html.status_code)

13 print('下载数据为空!')14 return ""

>然后就是对已下载的内容进行分析,就是取出我们需要的数据:

1 defparse(self, content):2 """分析数据"""

3

4 comments =[]5 try:6 for item in content['cmts']:7 comment ={8 'nickName': item['nickName'], #昵称

9 'cityName': item['cityName'], #城市

10 'content': item['content'], #评论内容

11 'score': item['score'], #评分

12 'startTime': item['startTime'], #时间

13 }14 comments.append(comment)15

16 exceptException as e:17 print(e)18

19 finally:20 return comments

>将分析出来的数据,进行本地保存,方便后续的分析工作:

1 defsave(self, data):2 """写入文件"""

3

4 print("保存数据,写入文件中...")5 self.save_file.write(data)

> 爬虫的核心控制也即爬虫的程序启动入口,管理上面几个方法的有序执行:

1 defstart(self):2 """启动控制方法"""

3

4 print("爬虫开始...\r\n")5

6 start_time =self.start_time7 end_time =self.end_time8

9 num = 1

10 while start_time >end_time:11 print("执行次数:", num)12 #1、下载html

13 content = self.download(self.target_url +str(start_time))14

15 #2、分析获取关键数据

16 comments = ''

17 if content != "":18 comments =self.parse(content)19

20 if len(comments) <=0:21 print("本次数据量为:0,退出爬取!\r\n")22 break

23

24 #3、写入文件

25 res = ''

26 for cmt incomments:27 res += "%s###%s###%s###%s###%s\n" % (cmt['nickName'], cmt['cityName'], cmt['content'], cmt['score'], cmt['startTime'])28 self.save(res)29

30 print("本次数据量:%s\r\n" %len(comments))31

32 #获取最后一条数据的时间 ,然后减去一秒

33 start_time = datetime.strptime(comments[len(comments) - 1]['startTime'], "%Y-%m-%d %H:%M:%S") + timedelta(seconds=-1)34 #start_time = datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")

35

36 #休眠3s

37 num += 1

38 time.sleep(3)39

40 self.save_file.close()41 print("爬虫结束...&

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值