Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python爬取猫眼「碟中谍」全部评论

Python爬取猫眼「碟中谍」全部评论

原创
作者头像
Awesome_Tang
修改于 2018-09-17 03:54:44
修改于 2018-09-17 03:54:44
4200
举报
文章被收录于专栏:FSocietyFSociety

实现目标

  • 昨天晚上看完碟中谍后,有点小激动,然后就有了这片文章。
  • 我们将猫眼上碟中谍的全部评论保存下来,用于后期分析~
  • 总共评论3W条左右。

逻辑梳理

  • 猫眼PC网页只能查看热门评论,只有在手机端页面才能查看全部评论。我们用chrome手机模式打开碟中谍6的页面,然后找到了全部评论入口:
  • 当我们将评论页面向上拖,后台请求中变看到了我们想要的接口地址:http://m.maoyan.com/mmdb/comments/movie/341737.json?_v_=yes&offset=15&startTime=2018-09-02%2013%3A33%3A14
  • 请求地址中的参数: offset:偏移量 startTime查询起始时间 还有一个V不知道啥意思,不过没啥影响
  • 其实正常来说到这儿就差不多了,按照以往的套路循环传入offset参数就好了,不过当我爬到第67页的时候,就已经不返回值了,为啥是67,67$\times$15=1005,猫眼应该是控制了每个startTime只能往前取1000条评论,所以只能换个思路,将每页最早一条评论的时间作为startTime传入,offset固定15就好了。
  • 最后效果

代码部分

  • Talk is cheap. Show me the code.
代码语言:txt
AI代码解释
复制
# -*- coding:utf-8 -*-
import requests
import json
from datetime import datetime
import time
from tqdm import tqdm
from random import random

class MaoYan():
	"""docstring for ClassName"""
	def __init__(self, movie_id):
		print '*******MaoYan_spider******'
		print 'Author :     Awesome_Tang'
		print 'Date   :       2018-09-01'
		print 'Version:        Python2.7'
		print '**************************\n'
		self.movie_id = movie_id
		self.starttime = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
		self.starturl = 'http://m.maoyan.com/mmdb/comments/movie/%s.json?_v_=yes&offset=0&startTime=%s'%(movie_id,self.starttime)
		self.headers = {'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'}
	
	def GetCommentNum(self):
		'''
		查询总评论数
		用于建立循环
		'''
		response = requests.get(self.starturl,headers = self.headers)
		text = response.json()
		num = text['total']
		print '>>>>查询时间:%s\n>>>>评论数量:%s'%(self.starttime,num)
		return num

	def FormatUrl(self,starttime):
		url = 'http://m.maoyan.com/mmdb/comments/movie/%s.json?_v_=yes&offset=30&startTime=%s'%(self.movie_id,starttime)
		return url

	def QueryComent(self,url):
		'''
		评论请求部分
		nickName:用户昵称
		cityName:城市
		content:评论内容
		score:用户评分🌟🌟
		startTime:评论时间,每次取最早的时间传入下次请求
		'''
		try:	
			response = requests.get(url, headers = self.headers, timeout = 5)
			if response.status_code == 200:
				attrs = ''
				comments = response.json()['cmts']
				for index in range(15):
					try:
						nickName = comments[index]['nickName']
						cityName = comments[index]['cityName']
						content = comments[index]['content']
						score = comments[index]['score']
						startTime = comments[index]['startTime']
						param = '%s|%s|%s|%s|%s\n'%(startTime,nickName,cityName,score,content)
						attrs = attrs+param
					except KeyError as e:
						attrs = ''		
				return attrs ,startTime, True
			else:
				print '>>>>查询过于频繁,请休息几分钟♨️♨️'
				return response.content.encode('utf-8'),'',False
		except BaseException as e:
			print '>>>>请检查网络...🔗🔗\n'
			print e.message
			return e.message,'',False

	def SaveComent(self):
		'''
		保存评论到txt文件
		如果请求成功保存,失败sleep100秒
		tqdm用于实现进度条
		'''
		num = self.GetCommentNum()
		pages = num/15
		with open('comment.txt','a+') as f:
			for i in tqdm(range(pages)):
				if i == 0:
					starttime = self.starttime
					url = self.FormatUrl(starttime)
					attrs,starttime,IsOk = self.QueryComent(url)
				else:
					url = self.FormatUrl(starttime)
					attrs,starttime,IsOk = self.QueryComent(url)
				if IsOk:
					f.write(attrs.encode('utf-8'))
				else:
					while True:
						time.sleep(100)
						attrs,starttime,IsOk = self.QueryComent(url)
						if IsOk:
							f.write(attrs.encode('utf-8'))
							break
						else:
							continue
			print '>>>>评论保存完毕...'



if __name__ == '__main__':
	p = MaoYan('341737')
	p.SaveComent()

最后

评论算保存完了,近期会再做一个关于此次数据的可视化分析。另外阿汤哥真心太帅了,全程打肾上腺素,各位还没去看的赶紧~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python爬取猫眼「碟中谍」全部评论
昨天晚上看完碟中谍后,有点小激动,然后就有了这片文章。 我们将猫眼上碟中谍的全部评论保存下来,用于后期分析~ 总共评论3W条左右。
Awesome_Tang
2018/09/11
7150
Python爬取猫眼「碟中谍」全部评论
Python项目实战-爬取猫眼电影
Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取!
python学习教程
2019/09/03
8010
Python项目实战-爬取猫眼电影
Python爬虫入门教程 33-100 《海王》评论数据抓取 scrapy
数据爬取的依旧是猫眼的评论,这部分内容咱们用把牛刀,scrapy爬取,一般情况下,用一下requests就好了
梦想橡皮擦
2019/03/04
6110
Python爬虫入门教程 33-100 《海王》评论数据抓取 scrapy
170行代码爬取《白蛇:缘起》短评数据
在我的童年记忆中,电视台播放的动画片大多都是从日本、美国引进的。很多动画片算是银幕上的经典,例如:《变形金刚》系列、《猛兽侠》、《蜘蛛侠》、《七龙珠》、《名侦探柯南》、《灌篮高手》、《数码宝贝》等。
猴哥yuri
2019/03/04
7440
170行代码爬取《白蛇:缘起》短评数据
爬取了 48048 条评论数据,解读 9.3 分的《毒液》是否值得一看?
11月,由汤姆·哈迪主演的“毒液:致命守护者”在国内上映,依托漫威的光环以及演员们精湛的演技,这部动作科幻片在猫眼评分得到豆瓣7.4的评分,口碑和票房都高于大多数同期上映的其他影片。
Devops海洋的渔夫
2022/01/17
2380
爬取了 48048 条评论数据,解读 9.3 分的《毒液》是否值得一看?
爬取《悲伤逆流成河》猫眼信息 | 郭敬明五年电影最动人之作
知道《悲伤逆流成河》上映还是在qq空间看见学弟发了说说,突然想起初中追小四的书,每天看到晚上10点多,昨天看了枪版的《悲伤逆流成河》,整个故事情节几乎和小说一模一样,当然缩减是避免不了的,最大的不一样的是原著里的易遥是跳楼自杀的,而电影里路遥是在众人的"舌枪唇剑"、幸灾乐祸的眼睛下,带着不甘与怨恨跳河自杀的,最后竟然…我就不剧透了,整部剧大概一个小时四十分钟下来全程无尿点,昨天就是枪版的我都看了两遍…(正打算找人去电影院再看一遍),也是看了第一遍,才让我想写这篇充满技术+情感的文章。
sergiojune
2018/10/23
7930
爬取《悲伤逆流成河》猫眼信息 | 郭敬明五年电影最动人之作
手把手教你用Python分析电影 | 以《蚁人2》为例
《蚁人2》自8月24日在中国大陆上映以来,已经有将近一个月。作为《复仇者联盟3》之后漫威出品的首部电影,《蚁人2》对漫威宇宙电影的剧情承转起着关键作用。9月20日当天在猫眼已经获得31.6万个评价,累计票房8.29亿,评分高达8.8分,不得不说这在漫威宇宙电影中已经是相当高的评分。
CDA数据分析师
2018/10/25
1.1K0
手把手教你用Python分析电影 | 以《蚁人2》为例
哪吒数据提取、数据分析
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
xbhog
2019/09/18
8610
哪吒数据提取、数据分析
爬取猫眼《长津湖》影评,分析观影群众信息,还进行了明日票房预测,好玩!
对于这个十一黄金周的电影市场,绝对是《长津湖》的天下,短短几天,票房就已经突破36亿,大有奋起直追《战狼2》的尽头。而且口碑也是相当的高,猫眼评分高达9.5,绝对的票房口碑双丰收啊
周萝卜
2021/10/13
6080
今天要去看电影《八佰》了,我用Python爬了14.4万条评论看看大家都在聊啥~
由于今年新冠疫情,电影院也是在最近一段时间才“解封”,《八佰》算是“开年”截止目前热度最高的电影了。朋友圈很多人看完容易沉浸在其气氛中、激发心中的民族感,当然也有一些网友持负面看法。那究竟大家都在有着什么样的观后感呢,我们来通过评论数据看看给予不同评分的观众都怎么说吧。
可以叫我才哥
2021/08/05
4550
用数据说话为何《一出好戏》首日就能拿下1.5亿票房.
本人作为黄渤的粉丝,《一出好戏》当然是必看无疑呀。在今天正式观看之前,先来通过猫眼的影评来分析下网友对它的反馈。
龙哥
2018/10/22
5010
用数据说话为何《一出好戏》首日就能拿下1.5亿票房.
花木兰到底好看不,我用Python爬取了几万条评论!
对于神仙姐姐刘亦菲,估计很多码农都很喜欢,小编也非常喜欢她。从一开始的金粉世家里面的青涩的白秀珠,到天龙八部的神仙姐姐王语嫣,再到仙剑奇侠传里面的赵灵儿,后来挑战四大名捕里面的无情,演技也是越来越好。
龙哥
2020/09/27
4500
花木兰到底好看不,我用Python爬取了几万条评论!
python简单分析《一出好戏》,黄渤导演处女作
然后我们按城市分组,发现有很多城市的数据只有1,2条,这些数据太少不足以代表改城市,所有我们选出 >10 条数据的城市
Python疯子
2018/08/27
3140
Python分析9万条数据告诉你复仇者联盟谁才是绝对C位
漫威宇宙,其实就讲了一件事情。整个宇宙就好比一个项目组。其中有一群叫作美国队长、钢铁侠、惊奇队长、浩克、索尔等人在维护这个项目,兢兢业业的维护整个项目。
AI科技大本营
2019/05/14
6220
Python分析9万条数据告诉你复仇者联盟谁才是绝对C位
Python爬取4000条猫眼评论,带你围观2021最烂院线电影
烂片能烂的让人记住的其实也不多,比如《富春山居图》、《上海堡垒》、《爵迹》之类。它们往往头顶着豆瓣2~3的评分,然后引发各种争议讨论,但其目标人群(明星粉丝)还是愿意掏腰包支持的。
朱小五
2021/04/21
1.5K0
Python爬取4000条猫眼评论,带你围观2021最烂院线电影
手把手教你用Python爬取猫眼电影Top100榜
这就是包含前10个电影的json链接:https://m.maoyan.com/asgard/asgardapi/mmdb/movieboard/moviedetail/fixedboard/39.json?ci=1&year=0&term=0&limit=10&offset=0
小宇-xiaoyu
2023/11/29
5920
手把手教你用Python爬取猫眼电影Top100榜
《爱情公寓》电影版,十年一瞬间(上)
最近闲来无事,看到数据森麟公众号分享的有关《西虹市首富》的猫眼电影评论分析,恰巧《爱情公寓》电影版上映,10年青春,来看看大家是怎么去吐槽的。
小F
2020/10/09
3040
《爱情公寓》电影版,十年一瞬间(上)
大黄蜂好看吗?用python分析电影观看数据
大黄蜂,2019-01-04 在大陆上映。观众们很期待。但是期待归期待,是否真的值得去电影院观看还是值得商榷的。本片导演 特拉维斯·奈特 主演:海莉·斯坦菲尔德,约翰·塞纳,小豪尔赫·兰登伯格 目前在猫眼电影中评分:9.20,评价人数:129402人。看数据还是值得瞧一瞧。
写PHP的老王
2019/08/12
4960
大黄蜂好看吗?用python分析电影观看数据
Ionic3学习笔记(十三)HttpClient 实现 HTTP 请求以及踩过的一些坑
当然是基于这篇古老的文章啦 ==> http://www.jianshu.com/p/9855610eb1d4 因为是2015年的文章,已经时隔2年多,很难确保API仍可使用,所以我亲自进行了抓包,发现没毛病还能用,并且还多发现了2个接口,现整理如下:
Theo Tsao
2018/09/07
3K0
用Python来看《我不是药神》到底神在哪?
简介:互联网公司运维技术负责人,拥有 10 年的互联网开发和运维经验。一直致力于运维工具的开发和运维专家服务的推进,赋能开发,提高效能。最后给自己代个盐,欢迎大家有空时翻下我牌子(知乎号:布道,微信:AiDevOps),看看“开发运维”专栏的文章和公众号的文章,希望多些关注和点赞是给作者最好的鼓励 !
数据森麟
2019/09/27
7110
用Python来看《我不是药神》到底神在哪?
推荐阅读
相关推荐
Python爬取猫眼「碟中谍」全部评论
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档