撿了滑鼠開網咖系列——nodejs爬取電影連結

彩色的橙子發表於2018-10-24

前言

最近在看新出的電視劇“鬥破蒼穹”,可是一集電視劇的廣告開頭90s中間45s片尾15s,實在令人髮指。之前有了解過,網上有很多免vip解析介面,於是本渣決定動手做一個可以去除廣告的小網站,於是有一下采坑過程。

採坑之路

首先,這是最終線上預覽。文章核心是爬取電影連結,然後和現有的會員解析介面拼接展示。

1.初版

視訊解析介面+電影連結=無廣告電影。

撿了滑鼠開網咖系列——nodejs爬取電影連結
經過測試,預期功能實現。emmm,滑鼠撿到了。可是每次都要找電影連結才能觀看是有點煩啊,能不能通過搜尋關鍵字直接播放呢? 作為一個前端弱雞,本能反應=》找介面。

2.找介面

找了半小時終於在聚合資料上找到符合條件的介面,影片連結還有上映資訊都可以拿到,簡直不要太舒服。使用過程發現聚合資料的介面資料並不完整,好多新上映的電影都沒有返回資料,而且還有呼叫次數限制,此方案終結。

3.nodejs爬蟲

有兩種思路:1.爬取各大視訊網站所有視訊連結並存入資料庫,使用者搜尋時去資料庫查詢電影。 2.獲取到前端搜尋關鍵字後,去視訊網站爬取,然後返回給前端。第一種方式資料量比較大,要考慮到網站的反爬措施,好要寫指令碼定時爬取以保持可以獲取視訊網站最新資料。第二種方法線上爬取,會有一定的延時,經過測試延時時長在1s左右,因此決定採用第二種方式。 通過對視訊網站分析發現,每個視訊網站都有全網搜尋介面,本次爬取企鵝視訊,上程式碼。

撿了滑鼠開網咖系列——nodejs爬取電影連結
其中$就是抓取到的html內容,如下圖。
撿了滑鼠開網咖系列——nodejs爬取電影連結
通過標籤獲取資料輕鬆拿到電影名、海報等資訊,但是播放連結這裡出現了一點問題:如果是電視劇會出現這個情況。
撿了滑鼠開網咖系列——nodejs爬取電影連結
因為電視劇集數比較多,所以中間會用‘...’省略,這時候爬蟲獲取的播放連結就不完整。開啟network,點選‘...’省略的集數載入了出來,於此同時
撿了滑鼠開網咖系列——nodejs爬取電影連結
可以看到,我們想要的資訊全在這個介面裡。於是我們在上一個介面採集連結時做一個判斷,如果當前連結value為'...'就呼叫這個介面,這裡要注意做非同步處理,不然採集不完整。

4.前端展示

這裡沒多少技術棧,但是因為前前後後需求一直改變,從最開始原生js到jquery,最後甚至想上框架~~!。算了不多數,這裡是github地址

5.總結

其實nodejs做爬蟲坑還是蠻多的,爬取電影連線時,電影、電視劇、綜藝、續集等都有不同的html結構,所以用標籤爬取資料真的不是一個好的思路。而且在獲取電視劇‘...’連結這一塊也比較坑,因為不會nodejs斷點除錯,很簡單的問題一直無法定位。 第一次寫文章,思路、格式都不太好,見諒。下班,嘿嘿,溜了。

相關文章