用node擼一個(gè)監(jiān)測(cè)復(fù)聯(lián)4開(kāi)售短信提醒的實(shí)現(xiàn)代碼
背景
北美復(fù)仇者聯(lián)盟4首映電影票eBay上面已經(jīng)2500美元一張票了,為了避免搶不到票 寫(xiě)了個(gè)監(jiān)控復(fù)仇者聯(lián)盟4開(kāi)售就發(fā)送短信的腳本,這樣我們可以第一時(shí)間進(jìn)行搶票,畢竟搶到就是賺到 。。。
思路
node編寫(xiě)一個(gè)抓包腳本監(jiān)測(cè)在售的電影中是否有 “復(fù)仇者聯(lián)盟” 這幾個(gè)關(guān)鍵詞,如果有則直接發(fā)送短信~
實(shí)現(xiàn)
要想實(shí)現(xiàn)我的想法,運(yùn)用到了2個(gè)node庫(kù):superagent 和 cheerio ,分別實(shí)現(xiàn)發(fā)送請(qǐng)求和dom節(jié)點(diǎn)分析。
設(shè)置定時(shí)器
這里用 setInterval 來(lái)實(shí)現(xiàn)定時(shí),每隔60s 抓取一次網(wǎng)頁(yè)數(shù)據(jù)
function intervalFunc() {
superagent.get('https://maoyan.com/films?sortId=2').end((err, res) => {
if (err) {
console.log(` - ${err}`)
} else {
getFilms(res)
}
});
}
var timer = setInterval(intervalFunc, 10000);
分析dom節(jié)點(diǎn)

我們只需要獲取到 div 的class 是 channel-detail 就可以了 ~
let getFilms = (res) => {
let $ = cheerio.load(res.text);
var isOn = false
$('.channel-detail').each((idx, ele) => {
if ($(ele).text().indexOf("復(fù)仇") != -1) {
isOn = true
}
});
if (isOn) {
for (const phone of phoneArray) {
sendMessage(phone)
}
clearInterval(timer)
} else {
console.log("影片未上映....")
}
};
這里如果監(jiān)測(cè)到影片已經(jīng)上映了記得關(guān)閉定時(shí)器 ~
發(fā)送短信
function sendMessage(mobile) {
var http = require('http');
var username = "";
var secretkey = "";
var path = "/sms_token?ddtkey=" + username + "&secretkey=" + secretkey
+ "&mobile=" + mobile + "&content=Go"
var options = {
host: '112.124.17.46',
port: 7001,
path: path,
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
http.get(options, function (res) {
var resData = "";
res.on("data", function (data) {
resData += data;
});
res.on("end", function () {
console.log("影片已經(jīng)上映,短信通知成功")
});
})
}
總結(jié)
1、node 抓包采用 superagent 和 cheerio
2、定時(shí)器關(guān)閉采用 clearInterval
完整的代碼地址:https://github.com/ChengRuipeng/maoyan
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Typescript和ES模塊發(fā)布Node模塊的方法
這篇文章主要介紹了使用Typescript和ES模塊發(fā)布Node模塊的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
window系統(tǒng) nodejs安裝opencv環(huán)境配置圖文詳解
這篇文章主要介紹了window系統(tǒng) nodejs安裝opencv環(huán)境配置,結(jié)合圖文形式詳細(xì)分析了window環(huán)境下 nodejs安裝opencv的具體步驟、注意事項(xiàng)2023-04-04
使用nvm實(shí)現(xiàn)多個(gè)nodejs版本的快速切換
NodeJS的升級(jí)比較快,在開(kāi)發(fā)中要使用最新的版本,必須經(jīng)常升級(jí),但對(duì)于一些老項(xiàng)目可能又要使用低版本的NodeJS,使用nvm工具可以方便的管理下載的NodeJS版本,并通過(guò)命令實(shí)現(xiàn)NodeJS版本的快速切換,需要的朋友可以參考下2024-09-09
Node.js實(shí)現(xiàn)壓縮與解壓數(shù)據(jù)
這篇文章介紹了Node.js實(shí)現(xiàn)壓縮與解壓數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
深入學(xué)習(xí)nodejs中的async模塊的使用方法
本篇文章主要介紹了nodejs中的async模塊的使用方法,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07

