用node撸一个监测复联4开售短信提醒的实现代码


Posted in Javascript onApril 10, 2019

背景

北美复仇者联盟4首映电影票eBay上面已经2500美元一张票了,为了避免抢不到票 写了个监控复仇者联盟4开售就发送短信的脚本,这样我们可以第一时间进行抢票,毕竟抢到就是赚到 。。。

思路

node编写一个抓包脚本监测在售的电影中是否有 “复仇者联盟” 这几个关键词,如果有则直接发送短信~

实现

要想实现我的想法,运用到了2个node库:superagent 和 cheerio ,分别实现发送请求和dom节点分析。

设置定时器

这里用 setInterval 来实现定时,每隔60s 抓取一次网页数据

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节点

用node撸一个监测复联4开售短信提醒的实现代码

我们只需要获取到 div 的class 是 channel-detail 就可以了 ~

let getFilms = (res) => {
  let $ = cheerio.load(res.text);
  var isOn = false
  $('.channel-detail').each((idx, ele) => {
    if ($(ele).text().indexOf("复仇") != -1) {
      isOn = true
    }
  });
  if (isOn) {
    for (const phone of phoneArray) {
      sendMessage(phone)
    }
    clearInterval(timer)
  } else {
    console.log("影片未上映....")
  }
};

这里如果监测到影片已经上映了记得关闭定时器 ~

发送短信

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("影片已经上映,短信通知成功")
    });
  })
}

总结

1、node 抓包采用 superagent 和 cheerio
2、定时器关闭采用 clearInterval

完整的代码地址:https://github.com/ChengRuipeng/maoyan

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 获取中文拼音,Select自动匹配字母获取值的代码
Sep 23 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
Dec 02 Javascript
js多个物体运动功能实例分析
Dec 20 Javascript
使用jsonp实现跨域获取数据实例讲解
Dec 25 Javascript
微信小程序自定义导航隐藏和显示功能
Jun 13 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
Jun 14 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
Nov 27 Javascript
使用webpack搭建vue项目及注意事项
Jun 10 Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 Javascript
vue输入框使用模糊搜索功能的实现代码
May 26 Javascript
jQuery-App输入框实现实时搜索
Nov 19 jQuery
javascript实现拼图游戏
Jan 29 Javascript
从0到1搭建Element的后台框架的方法步骤
Apr 10 #Javascript
详解vue.js移动端配置flexible.js及注意事项
Apr 10 #Javascript
小程序分享模块超级详解(推荐)
Apr 10 #Javascript
关于JavaScript 数组你应该知道的事情(推荐)
Apr 10 #Javascript
Vue中computed、methods与watch的区别总结
Apr 10 #Javascript
JavaScript 性能提升之路(推荐)
Apr 10 #Javascript
详解vue-cli3 中跨域解决方案
Apr 10 #Javascript
You might like
php启用zlib压缩文件的配置方法
2013/06/12 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
2013/03/01 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
详解Python中的条件判断语句
2015/05/14 Python
Keras之自定义损失(loss)函数用法说明
2020/06/10 Python
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
出纳岗位职责
2013/11/09 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
法人代表证明书
2014/09/18 职场文书
镇副书记专题民主生活会对照检查材料思想汇报
2014/10/02 职场文书
经理助理岗位职责
2015/02/02 职场文书
管理失职检讨书范文
2015/05/05 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
python实现socket简单通信的示例代码
2021/04/13 Python