捡了鼠标开网吧系列——nodejs爬取电影链接

5,556 阅读3分钟

前言

最近在看新出的电视剧“斗破苍穹”,可是一集电视剧的广告开头90s中间45s片尾15s,实在令人发指。之前有了解过,网上有很多免vip解析接口,于是本渣决定动手做一个可以去除广告的小网站,于是有一下采坑过程。

采坑之路

首先,这是最终在线预览。文章核心是爬取电影链接,然后和现有的会员解析接口拼接展示。

1.初版

视频解析接口+电影链接=无广告电影。

经过测试,预期功能实现。emmm,鼠标捡到了。可是每次都要找电影链接才能观看是有点烦啊,能不能通过搜索关键字直接播放呢? 作为一个前端弱鸡,本能反应=》找接口。

2.找接口

找了半小时终于在聚合数据上找到符合条件的接口,影片链接还有上映信息都可以拿到,简直不要太舒服。使用过程发现聚合数据的接口数据并不完整,好多新上映的电影都没有返回数据,而且还有调用次数限制,此方案终结。

3.nodejs爬虫

有两种思路:1.爬取各大视频网站所有视频链接并存入数据库,用户搜索时去数据库查找电影。 2.获取到前端搜索关键字后,去视频网站爬取,然后返回给前端。第一种方式数据量比较大,要考虑到网站的反爬措施,好要写脚本定时爬取以保持可以获取视频网站最新数据。第二种方法在线爬取,会有一定的延时,经过测试延时时长在1s左右,因此决定采用第二种方式。 通过对视频网站分析发现,每个视频网站都有全网搜索接口,本次爬取企鹅视频,上代码。

其中$就是抓取到的html内容,如下图。
通过标签获取数据轻松拿到电影名、海报等信息,但是播放链接这里出现了一点问题:如果是电视剧会出现这个情况。
因为电视剧集数比较多,所以中间会用‘...’省略,这时候爬虫获取的播放链接就不完整。打开network,点击‘...’省略的集数加载了出来,于此同时
可以看到,我们想要的信息全在这个接口里。于是我们在上一个接口采集链接时做一个判断,如果当前链接value为'...'就调用这个接口,这里要注意做异步处理,不然采集不完整。

4.前端展示

这里没多少技术栈,但是因为前前后后需求一直改变,从最开始原生js到jquery,最后甚至想上框架~~!。算了不多数,这里是github地址

5.总结

其实nodejs做爬虫坑还是蛮多的,爬取电影连接时,电影、电视剧、综艺、续集等都有不同的html结构,所以用标签爬取数据真的不是一个好的思路。而且在获取电视剧‘...’链接这一块也比较坑,因为不会nodejs断点调试,很简单的问题一直无法定位。 第一次写文章,思路、格式都不太好,见谅。下班,嘿嘿,溜了。