用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 相关文章推荐
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
Jul 11 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
May 20 Javascript
jQuery中insertAfter()方法用法实例
Jan 08 Javascript
Ajax清除浏览器js、css、图片缓存的方法
Aug 06 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
Aug 24 Javascript
百度地图给map添加右键菜单(判断是否为marker)
Mar 04 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
Mar 23 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
Oct 15 Javascript
jQuery实现页面倒计时并刷新效果
Mar 13 Javascript
微信小程序 flex实现导航实例详解
Apr 26 Javascript
微信小程序3D轮播实现代码
Sep 19 Javascript
jQuery实现html可联动的百分比进度条
Mar 26 jQuery
从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取二进制文件头快速判断文件类型的实现代码
2013/08/05 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
JavaScript 中的 this 工作原理
2018/06/20 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
详解webpack loader和plugin编写
2018/10/12 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
python获取指定时间差的时间实例详解
2017/04/11 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
Python3 中文文件读写方法
2018/01/23 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
最好的商品表达自己:Cafepress
2019/09/04 全球购物
家长评语大全
2014/01/22 职场文书
小学生成长感言
2014/01/30 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
小学生节水倡议书
2015/04/29 职场文书
开学典礼致辞
2015/07/29 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
Redis分布式锁Redlock的实现
2021/08/07 Redis
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电