爬虫实战(二)猫眼电影动态数据爬取

爬虫部分的知识算是告一段落了,又是几天过去了,感觉挺充实的。里面可能还有一些需要改进的地方,慢慢完善吧。

接下来我们就说说上次遗留下来的问题,如何爬取动态数据。先告诉你一下爬取的数据中为什么没有电影信息吧:因为我们请求的是静态页面地址。如果请求的是动态资源,会从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。

所以,我们现在需要知道它的动态加载数据的地址,我们在浏览器调试中去找出这条地址即可。

首先我们要有一款浏览器:谷歌或者360浏览器

  • 谷歌浏览器操作方法:点击页面右上角的“三点” → 更多工具 → 开发者工具
  • 360浏览器操作方法:空白地方对页面单击右键 → 审查元素(如果没有,说明该页面不支持)
  • 其他浏览器操作方法请自行百度

打开页面调试后,我们选择横条上的Network,刷新页面,我们就看到多条服务器响应返回的记录,接下来就是仔细去找我们需要的信息了。

接着上个实验,我们做完以上的准备工作,由于返回的记录数只有一条,那么我们就可以断定,以下就是动态加载的网址。

http://m.maoyan.com/imeituan/ajax/cinema?offset=0&_v_=yes

开始写代码

import requests

header = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
}
res = requests.get('http://m.maoyan.com/imeituan/ajax/cinema?offset=0&_v_=yes',headers=header).json()
print(res)

抓取成功,部分结果如下:

{...'cinemas': [{...'nm': '喜满客影城', 'mark': 0, 'price': 27, 'referencePrice': '0', 'sellPrice': '27', 'tag': {'deal': 0, 'snack': 0, 'vipTag': '折扣卡', 'hallType': ['巨幕厅', '4D厅'], 'allowRefund': 0, 'sell': 1, 'hallTypeVOList': [{'name': '巨幕厅', 'url': ''}, {'name': '4D厅', 'url': ''}], 'buyout': 0, 'endorse': 1}, 'distance': '1.7km', 'showPrice': True, 'shopId': 14714361, 'id': 7285, 'score': 558.62067, 'dis': 1688.9367843113519, 'follow': 0, 'labels': [{'name': '改签', 'color': '#579daf'}, {'name': '折扣卡', 'color': '#ff9900'}, {'name': '巨幕厅', 'color': '#579daf', 'url': ''}, {'name': '4D厅', 'color': '#579daf', 'url': ''}],...}

这里我们可以发现price和sellPrice都是27元,而且和网页上的价格吻合,和referencePrice没有关系。

至此,我们的项目结......等等,27元的电影票!感觉没有优惠啊,打开美团app一看,9.9元特惠!!!

不过还是得把项目结束了,等有机会我们来学习爬取app数据,相信你一定会感兴趣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章