用Node.js写的爬取淘宝、美团等平台上电影票价的项目
本人Node新手,最近接触到request、cheerio模块,就想着做一个爬虫项目。因为经常去电影院看电影,每次买票都要去淘宝、美团等平台上对比一下票价,就想着能不能自己写个爬虫获取这些网站上的电影票价,放到一个页面里展示,方便的找到最低的票价。 然后就自己动手写了这样一个项目 GitHub地址,目前已经获取到了淘宝、百度糯米、美团的票价信息。 因为本人在南京,所以目前实现的就是获取南京市各电影院的票价信息,项目利用request、cheerio爬取网页,MongoDB存储数据,express+ejs做页面展示。
应用截图:
-
电影
-
影院(因为各平台上电影院的名称都不一致,所以影院信息只能自己手动输入,表格中的字段是可以编辑的)
-
票价
遇到的一些问题:
- 爬取淘宝电影时,有时候请求频繁会返回输入验证码的页面,就没法获取票价信息,目前是设置了每请求一次后隔一段时间再进行下一次请求,降低频率,但是这样还是不可靠
- 美团的网页上的票价全部都是图片,没法获取数值,所以目前只能获取这个票价区域的html进行展示,这样的问题就是没法进行票价比较(现已解决)
21 回复
2015.12.23更新
- 微票电影网页改版,似乎已全部移到移动端,原先的爬取方法失效,放弃微票电影的爬取。
- 根据@jiangli373 的提议,美团票价改为从猫眼移动端网页爬取,但是移动网页上的HTML部分仍然不是直接通过数字展示。通过分析HTML与CSS,通过偏移距离和宽度判断,成功从HTML中提取出票价数字。
- 首页添加场次,并按照场次排序。