用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 基于面向对象的javascript
Feb 16 Javascript
jQuery操作 input type=checkbox的实现代码
Jun 14 Javascript
浏览器打开层自动缓慢展开收缩实例代码
Jul 04 Javascript
js实现顶部可折叠的菜单工具栏效果实例
May 09 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
微信小程序 开发MAP(地图)实例详解
Jun 27 Javascript
CentOS环境中MySQL修改root密码方法
Jan 07 Javascript
javascript实现文件拖拽事件
Mar 29 Javascript
微信小程序制作表格的方法
Feb 14 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
Mar 08 Javascript
js中复选框的取值及赋值示例详解
Oct 18 Javascript
JS高级程序设计之class继承重点详解
Jul 07 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 function用法如何递归及return和echo区别
2014/03/07 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
教大家制作简单的php日历
2015/11/17 PHP
php微信开发接入
2016/08/27 PHP
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
JS中的phototype详解
2017/02/04 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
Vue实现小购物车功能
2020/12/21 Vue.js
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
Django如何实现内容缓存示例详解
2017/09/24 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
Python进阶之尾递归的用法实例
2018/01/31 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
学生操行评语大全
2014/04/24 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
2015年教务工作总结
2015/05/23 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript