《毒液》:用Fiddler+MongoDB抓取猫眼APP短评

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,并注明消息来源,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

作者:zuobangbang

微信公众号:zuobangbang

毒液这部电影自上映后就好评,热搜不断,可见其火爆程度。笔者为了让文章更加贴近生活(实际是为了涨粉),打算爬一爬关于毒液的短评。

《毒液》:用Fiddler+MongoDB抓取猫眼APP短评_第1张图片

之前爬过豆瓣的影评,不过它只显示500条,而猫眼网页端的反爬也做的非常好,仅可见10条短评,所以只能从手机端着手了。下载猫眼APP,点开电影毒液的短评合集,可以看到最新的短评,这些数据是异步加载的,不断往下滑,就会有数据不断的出现。

《毒液》:用Fiddler+MongoDB抓取猫眼APP短评_第2张图片

下面就是使用Fiddler对手机进行抓包了。Fiddler的安装非常简单,就和安装QQ一样,自己可以独立完成。

《毒液》:用Fiddler+MongoDB抓取猫眼APP短评_第3张图片

Fiddler安装好以后,让手机和电脑使用同一个WiFi,找到本机IP地址后,对手机端链接的Wifi进行代理配置,端口默认为8888,服务器是你的本机IP地址。

《毒液》:用Fiddler+MongoDB抓取猫眼APP短评_第4张图片

你以为这样就可以抓包了???错!这是最重要的一步,手机打开192.168.1.107:8888,下载根证书后安装在手机上。完成这步之后就可以抓包了,不然你会处于连了WiFi却上不了网的尴尬处境。

《毒液》:用Fiddler+MongoDB抓取猫眼APP短评_第5张图片

现在开始正式抓包。打开短评后,不断往下翻,在fiddler不断的有更新,点开Host为m.maoyan.com的#为json的链接。

《毒液》:用Fiddler+MongoDB抓取猫眼APP短评_第6张图片

右上角的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;依次类推。

《毒液》:用Fiddler+MongoDB抓取猫眼APP短评_第7张图片

offset表示以starttime为起点往前搜,每页第一条短评的编号,0,15,30......注意,offset最多到1000,1000以后返回下图:

《毒液》:用Fiddler+MongoDB抓取猫眼APP短评_第8张图片

所以,整体的循环思路为:获取每面最后一条短评的发布时间,拼接成新的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)#将数据存入数据库中

整体的数据看起来非常漂亮,而且对数据进行增删查减也不会出现乱码的现象,所以非常推荐大家以后将数据存到数据库中。

《毒液》:用Fiddler+MongoDB抓取猫眼APP短评_第9张图片

完整的代码已上传Github,https://github.com/zuobangbang/movie

本文的初衷在于掌握Fiddler抓取App以及Mongodb的使用,所以相关的可视化分析就不进行了。如果大家感兴趣可以自行抓取分析。但是后续会出一篇关于MongoDB各种操作的文章,帮助掌握MongoDB。

《毒液》:用Fiddler+MongoDB抓取猫眼APP短评_第10张图片

Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

3901436-81fb5d5c1adf4bb3

关注后在公众号内回复“课程”即可获取:

小编的转行入职数据科学(数据分析挖掘/机器学习方向)【最新免费】

小编的Python入门免费视频课程!!!

小编的Python快速上手matplotlib可视化库!!!

崔老师爬虫实战案例免费学习视频。

陈老师数据分析报告制作免费学习视频。

玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

《毒液》:用Fiddler+MongoDB抓取猫眼APP短评_第11张图片

你可能感兴趣的:(《毒液》:用Fiddler+MongoDB抓取猫眼APP短评)