用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 相关文章推荐
window.event快达到全浏览器支持了,以后使用就方便了
Nov 30 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
Sep 29 Javascript
jQuery实现表格颜色交替显示的方法
Mar 09 Javascript
JavaScript的jQuery库中function的存在和参数问题
Aug 13 Javascript
angularjs创建弹出框实现拖动效果
Aug 25 Javascript
最细致的vue.js基础语法 值得收藏!
Nov 03 Javascript
js实现的xml对象转json功能示例
Dec 24 Javascript
利用JS实现文字的聚合动画效果
Jan 22 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
Aug 21 Javascript
ES6中数组array新增方法实例总结
Nov 07 Javascript
jQuery轮播图实例详解
Aug 15 jQuery
原生js实现无缝轮播图效果
Jan 28 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
用Zend Encode编写开发PHP程序
2006/10/09 PHP
php通过字符串调用函数示例
2014/03/02 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
php常用数组函数实例小结
2016/12/29 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
王纯业的Python学习笔记 下载
2007/02/10 Python
Python合并字符串的3种方法
2015/05/21 Python
python openCV自制绘画板
2020/10/27 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
阿拉伯书店:Jamalon
2019/07/24 全球购物
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
主持人婚宴答谢词
2014/01/28 职场文书
读书活动总结
2014/04/28 职场文书
大学毕业生推荐信
2014/07/09 职场文书
国庆促销活动总结
2014/08/29 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
民政局个人整改措施
2014/09/24 职场文书
golang switch语句的灵活写法介绍
2021/05/06 Golang
Python学习之异常中的finally使用详解
2022/03/16 Python