用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 相关文章推荐
详解强大的jQuery选择器之基本选择器、层次选择器
Feb 07 Javascript
js css后面所带参数含义介绍
Aug 18 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
Aug 02 Javascript
判断颜色是否合法的正则表达式(详解)
May 03 Javascript
Vue组件化通讯的实例代码
Jun 23 Javascript
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
浅谈基于Vue.js的移动组件库cube-ui
Dec 20 Javascript
vue 插值 v-once,v-text, v-html详解
Jan 19 Javascript
详解基于Node.js的HTTP/2 Server实践
May 31 Javascript
深入浅析Vue 中 ref 的使用
Apr 29 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
Aug 12 Javascript
手把手带你搭建一个node cli的方法示例
Aug 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自动更新新闻DIY
2006/10/09 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
canvas线条的属性详解
2018/03/27 HTML / CSS
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
销售文员岗位职责
2013/11/29 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
七一党日活动总结
2014/07/08 职场文书
党在我心中的演讲稿
2014/09/13 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
关于vue-router-link选择样式设置
2022/04/30 Vue.js