欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!
对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,并注明消息来源,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。
作者:zuobangbang
微信公众号:zuobangbang
毒液这部电影自上映后就好评,热搜不断,可见其火爆程度。笔者为了让文章更加贴近生活(实际是为了涨粉),打算爬一爬关于毒液的短评。
之前爬过豆瓣的影评,不过它只显示500条,而猫眼网页端的反爬也做的非常好,仅可见10条短评,所以只能从手机端着手了。下载猫眼APP,点开电影毒液的短评合集,可以看到最新的短评,这些数据是异步加载的,不断往下滑,就会有数据不断的出现。
下面就是使用Fiddler对手机进行抓包了。Fiddler的安装非常简单,就和安装QQ一样,自己可以独立完成。
Fiddler安装好以后,让手机和电脑使用同一个WiFi,找到本机IP地址后,对手机端链接的Wifi进行代理配置,端口默认为8888,服务器是你的本机IP地址。
你以为这样就可以抓包了???错!这是最重要的一步,手机打开192.168.1.107:8888,下载根证书后安装在手机上。完成这步之后就可以抓包了,不然你会处于连了WiFi却上不了网的尴尬处境。
现在开始正式抓包。打开短评后,不断往下翻,在fiddler不断的有更新,点开Host为m.maoyan.com的#为json的链接。
右上角的Raw标签中,有具体的URL,右下角的JSON标签中是需要抓取的数据。抓取JSON数据的代码如下:
html = requests.get(url, headers=headers).json()
datas = html['cmts']
com= []
fordata in datas:
inf = {}
inf['comment'] = data['content']
inf['city'] = data['cityName']
inf['name'] = data['nick']
inf['score'] = data['score']
inf['reply'] = data['reply']
inf['apptime'] = data['startTime']
inf['urseid'] = data['userId']
inf['approve'] = data['approve']
com.append(inf)
下面分析其url:https://m.maoyan.com/mmdb/comments/movie/42964.json?_v_=yes&offset=0&startTime=2018-11-6%2000%3A00%3A00--------其中42964是电影毒液的ID,startTime是只从哪个时间开始往前搜,下图用红线画出了各个短评发布的时间,现在这个url表示从20018年11月6日零点零分零秒开始往前搜,第一条短评发布的时间为2018-11-05 23:53:59,第二条短评发布的时间为2018-11-05 23:39:48;依次类推。
offset表示以starttime为起点往前搜,每页第一条短评的编号,0,15,30......注意,offset最多到1000,1000以后返回下图:
所以,整体的循环思路为:获取每面最后一条短评的发布时间,拼接成新的url,其中offset一直设置为0。
if__name__=='__main__':
endtime='2018-11-06 00:00:00'
apptime=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
#apptime='2018-11-15 15:02:19'
whileendtime
time.sleep(random.randint(1,2))
url ='https://m.maoyan.com/mmdb/comments/movie/42964.json?_v_=yes&offset=0&startTime={}'.format(parse.quote(apptime))
apptime=get_comment(url)
print(apptime)
最后将所有爬到的数据都存进MongoDB中。
frompymongoimportMongoClient
collection=MongoClient('localhost',27017)
collection=collection.movie
collection=collection['毒液']#将python 与MongoDB链接
com=[]
collection.insert_many(com)#将数据存入数据库中
整体的数据看起来非常漂亮,而且对数据进行增删查减也不会出现乱码的现象,所以非常推荐大家以后将数据存到数据库中。
完整的代码已上传Github,https://github.com/zuobangbang/movie
本文的初衷在于掌握Fiddler抓取App以及Mongodb的使用,所以相关的可视化分析就不进行了。如果大家感兴趣可以自行抓取分析。但是后续会出一篇关于MongoDB各种操作的文章,帮助掌握MongoDB。
Python爱好者社区历史文章大合集:
Python爱好者社区历史文章列表(每周append更新一次)
福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:
关注后在公众号内回复“课程”即可获取:
小编的转行入职数据科学(数据分析挖掘/机器学习方向)【最新免费】
小编的Python入门免费视频课程!!!
小编的Python快速上手matplotlib可视化库!!!
崔老师爬虫实战案例免费学习视频。
陈老师数据分析报告制作免费学习视频。
玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。